001: package org.contineo.core.text.parser;
002:
003: import java.io.BufferedInputStream;
004: import java.io.File;
005: import java.io.FileInputStream;
006: import java.io.InputStream;
007:
008: import org.apache.commons.logging.Log;
009: import org.apache.commons.logging.LogFactory;
010: import org.contineo.core.JarBean;
011: import org.contineo.util.Context;
012: import org.contineo.util.config.SettingsConfig;
013:
014: /**
015: * @author Michael Scholz
016: *
017: */
018: public class KOParser implements Parser {
019: private StringBuffer content = new StringBuffer();
020:
021: protected static Log logger = LogFactory.getLog(KOParser.class);
022:
023: public KOParser(File file) {
024: init(file);
025: }
026:
027: protected void init(File file) {
028: try {
029: SettingsConfig conf = (SettingsConfig) Context
030: .getInstance().getBean(SettingsConfig.class);
031: JarBean.unjar(file.getAbsolutePath(), conf
032: .getValue("userdir")
033: + "unjar/", conf.getValue("kocontent"));
034:
035: File xmlfile = new File(conf.getValue("userdir") + "unjar/"
036: + conf.getValue("kocontent"));
037: InputStream in = new FileInputStream(xmlfile);
038: BufferedInputStream reader = new BufferedInputStream(in);
039: int ichar = 0;
040: boolean istag = false;
041: boolean isspec = false;
042:
043: while ((ichar = reader.read()) != -1) {
044: if (ichar == 60) {
045: content.append((char) 32);
046: istag = true;
047: }
048:
049: if (!istag) {
050: if (ichar == 195) {
051: isspec = true;
052: } else {
053: if (isspec) {
054: switch (ichar) {
055: case 132: {
056: content.append('Ä');
057: break;
058: }
059:
060: case 164: {
061: content.append('ä');
062: break;
063: }
064:
065: case 150: {
066: content.append('Ö');
067: break;
068: }
069:
070: case 182: {
071: content.append('ö');
072: break;
073: }
074:
075: case 156: {
076: content.append('Ü');
077: break;
078: }
079:
080: case 188: {
081: content.append('ü');
082: break;
083: }
084:
085: case 159: {
086: content.append('ß');
087: break;
088: }
089: }
090:
091: isspec = false;
092: } else {
093: content.append((char) ichar);
094: }
095: }
096: }
097:
098: if (ichar == 62) {
099: istag = false;
100: }
101: }
102:
103: in.close();
104: reader.close();
105: } catch (Exception ex) {
106: logger.error(ex.getMessage());
107: }
108: }
109:
110: /**
111: * @see org.contineo.core.text.parser.Parser#getVersion()
112: */
113: public String getVersion() {
114: return "";
115: }
116:
117: /**
118: * @see org.contineo.core.text.parser.Parser#getContent()
119: */
120: public StringBuffer getContent() {
121: return content;
122: }
123:
124: /**
125: * @see org.contineo.core.text.parser.Parser#getAuthor()
126: */
127: public String getAuthor() {
128: return "";
129: }
130:
131: /**
132: * @see org.contineo.core.text.parser.Parser#getSourceDate()
133: */
134: public String getSourceDate() {
135: return "";
136: }
137:
138: /**
139: * @see org.contineo.core.text.parser.Parser#getKeywords()
140: */
141: public String getKeywords() {
142: return "";
143: }
144:
145: /**
146: * @see org.contineo.core.text.parser.Parser#getTitle()
147: */
148: public String getTitle() {
149: return "";
150: }
151: }
|