Skip to content

Commit 8b96e1c

Browse files
committed
add jar export support, now AndroidXMLToJava can be run as a jar
1 parent 03a5061 commit 8b96e1c

File tree

7 files changed

+72
-24
lines changed

7 files changed

+72
-24
lines changed

.classpath

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
<classpath>
33
<classpathentry kind="src" path="src"/>
44
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
5-
<classpathentry kind="lib" path="libs/dom4j-1.6.1.jar" sourcepath="H:/BaiduYunDownload/dom4j-1.6.1.zip"/>
5+
<classpathentry kind="lib" path="libs/dom4j-1.6.1.jar"/>
66
<classpathentry kind="lib" path="libs/htmlparser/filterbuilder.jar"/>
77
<classpathentry kind="lib" path="libs/htmlparser/htmllexer.jar"/>
88
<classpathentry kind="lib" path="libs/htmlparser/htmlparser.jar"/>
99
<classpathentry kind="lib" path="libs/htmlparser/sitecapturer.jar"/>
1010
<classpathentry kind="lib" path="libs/htmlparser/thumbelina.jar"/>
11-
<classpathentry kind="lib" path="F:/workspace/AndroidXMLToJava/libs/mock_android.jar"/>
11+
<classpathentry kind="lib" path="libs/mock_android.jar"/>
1212
<classpathentry kind="output" path="bin"/>
1313
</classpath>

MANIFEST.MF

-3
This file was deleted.

README renamed to README.md

File renamed without changes.

src/com/sickworm/androidx2j/Config.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ public class Config {
99
public static final String ENCODE = com.sickworm.androidx2j.dbbuilder.Config.ENCODE;
1010

1111
public static final String RESOURCES_CLASS = "JResources";
12+
public static final String TEMPLAT_DRAWABLES_CLASS = "drawables.java";
13+
public static final String TEMPLAT_LAYOUTS_CLASS = "layouts";
1214
public static final String TEMPLAT_RESOURCES_CLASS = "Resources";
13-
public static final String UTILS_CLASS = "Utils";
1415
public static final String TEMPLAT_UTILS_CLASS = "Utils";
16+
public static final String UTILS_CLASS = "Utils";
1517
public static final String MAP_OBJECT_NAME = com.sickworm.androidx2j.dbbuilder.Config.MAP_OBJECT_NAME;
1618
public static final int API_LEVEL = 8;
1719

@@ -33,6 +35,11 @@ public static String getAssetsOutPath() {
3335
public static String getProjectResPath() {
3436
return PROJECT_PATH + "res/";
3537
}
38+
39+
public static String getTempletPath() {
40+
return "templet/";
41+
}
42+
3643

3744
/**base of R resources id**/
3845
public static final int BASE = 0x7f040000;

src/com/sickworm/androidx2j/ProjectConverter.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,14 @@ private static void GenerateManager() {
254254
//Resources.java
255255
File resourcesFile = new File(Config.getJavaOutPath() + Config.RESOURCES_CLASS + ".java");
256256
System.out.println("Generating " + resourcesFile.getPath() + "...");
257-
String resources = Utils.readFile("templet/" + Config.TEMPLAT_RESOURCES_CLASS + ".java");
257+
String resources = Utils.readFile(Config.getTempletPath() + Config.TEMPLAT_RESOURCES_CLASS + ".java");
258258
resources = resources.replace(Config.TEMPLET_PACKAGE_NAME, Config.PACKAGE_NAME);
259259
resources = resources.replace(Config.TEMPLAT_RESOURCES_CLASS, Config.RESOURCES_CLASS);
260260
Utils.writeFile(Config.getJavaOutPath() + Config.RESOURCES_CLASS + ".java", resources);
261261
System.out.println();
262262

263263
//drawables.java
264-
File drawablesFile = new File(Config.getJavaOutPath() + "drawables.java");
264+
File drawablesFile = new File(Config.getJavaOutPath() + Config.TEMPLAT_DRAWABLES_CLASS + ".java");
265265
System.out.println("Generating " + drawablesFile.getPath() + "...");
266266

267267
String[] dpiCaseList = new String[Config.TEMPLET_DPI_BLOCK_LIST.length];
@@ -283,19 +283,19 @@ private static void GenerateManager() {
283283
}
284284
}
285285

286-
String drawables = Utils.readFile("templet/drawables.java");
286+
String drawables = Utils.readFile(Config.getTempletPath() + Config.TEMPLAT_DRAWABLES_CLASS + ".java");
287287
drawables = drawables.replace(Config.TEMPLET_PACKAGE_NAME, Config.PACKAGE_NAME);
288288
for (int i = 0; i < Config.TEMPLET_DPI_BLOCK_LIST.length; i++) {
289289
drawables = drawables.replace(Config.TEMPLET_DPI_BLOCK_LIST[i], dpiCaseList[i]);
290290
}
291-
Utils.writeFile(Config.getJavaOutPath() + "drawables.java", drawables);
291+
Utils.writeFile(Config.getJavaOutPath() + Config.TEMPLAT_DRAWABLES_CLASS + ".java", drawables);
292292
System.out.println();
293293

294294
//layouts.java
295295
File layoutsFile = new File(Config.getJavaOutPath() + "layouts.java");
296296
System.out.println("Generating " + layoutsFile.getPath() + "...");
297297

298-
String layouts = Utils.readFile("templet/layouts.java");
298+
String layouts = Utils.readFile(Config.getTempletPath() + Config.TEMPLAT_LAYOUTS_CLASS + ".java");
299299
layouts = layouts.replace(Config.TEMPLET_PACKAGE_NAME, Config.PACKAGE_NAME);
300300

301301
String layoutCaseList = "";
@@ -310,7 +310,7 @@ private static void GenerateManager() {
310310

311311
private static void GenerateUtils() {
312312
File utilsFile = new File(Config.getJavaOutPath() + Config.UTILS_CLASS + ".java");
313-
String content = Utils.readFile("templet/" + Config.TEMPLAT_UTILS_CLASS + ".java");
313+
String content = Utils.readFile(Config.getTempletPath() + Config.TEMPLAT_UTILS_CLASS + ".java");
314314
content = content.replace(Config.TEMPLAT_UTILS_CLASS, Config.UTILS_CLASS);
315315
content = content.replace(Config.TEMPLET_PACKAGE_NAME, Config.PACKAGE_NAME);
316316
Utils.writeFile(utilsFile.getPath(), content);

src/com/sickworm/androidx2j/Utils.java

+26-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.io.BufferedWriter;
55
import java.io.File;
66
import java.io.FileInputStream;
7+
import java.io.FileNotFoundException;
78
import java.io.FileOutputStream;
89
import java.io.FileWriter;
910
import java.io.IOException;
@@ -36,19 +37,42 @@ public static boolean isSupportClass(Class<?> type) {
3637
* @param fileName
3738
* @return content of file, return "" if error occurs
3839
*/
40+
@SuppressWarnings("resource")
3941
public static String readFile(String filePath) {
42+
InputStream inputStream = null;
43+
// from project
4044
try {
41-
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath)), Config.ENCODE));
45+
inputStream = new FileInputStream(filePath);
46+
} catch (FileNotFoundException e) {
47+
}
48+
// from jar
49+
if (inputStream == null) {
50+
inputStream = Utils.class.getResourceAsStream("/" + filePath);
51+
}
52+
if (inputStream == null) {
53+
System.out.println("can not find file " + filePath);
54+
return "";
55+
}
56+
57+
try {
58+
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Config.ENCODE));
4259
String content = "";
4360
String buf;
4461
while ((buf = reader.readLine())!= null) {
4562
content += buf + "\n";
4663
}
4764
reader.close();
65+
inputStream.close();
4866
return content;
4967
}
50-
catch( Exception e ) {
68+
catch(Exception e) {
69+
System.out.println("got an error while reading the file " + filePath);
5170
e.printStackTrace();
71+
try {
72+
inputStream.close();
73+
} catch (IOException e1) {
74+
e1.printStackTrace();
75+
}
5276
return "";
5377
}
5478
}

src/com/sickworm/androidx2j/dbbuilder/AndroidDocConverter.java

+30-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import java.io.BufferedWriter;
55
import java.io.File;
66
import java.io.FileInputStream;
7+
import java.io.FileNotFoundException;
78
import java.io.FileOutputStream;
9+
import java.io.IOException;
10+
import java.io.InputStream;
811
import java.io.InputStreamReader;
912
import java.io.OutputStreamWriter;
1013
import java.util.HashMap;
@@ -150,12 +153,10 @@ private static void generateSystem(HashMap<String, AX2JStyle> map, String block)
150153

151154
public static AX2JTranslatorMap getMap() {
152155
if (attrToMethodMap.getMap().size() == 0) {
153-
File dat = new File(Config.DAT_PATH);
154-
if (!dat.isFile()) {
156+
String content = readFile(Config.DAT_PATH, Config.DAT_BLOCK);
157+
if (content.isEmpty()) {
155158
throw new AndroidDocException(AndroidDocException.DAT_READ_ERROR);
156159
}
157-
158-
String content = readFile(dat.getPath(), Config.DAT_BLOCK);
159160
String[] list = content.split("\n");
160161
for (String s : list) {
161162
if (s.startsWith("//")) {
@@ -183,13 +184,11 @@ public static HashMap<String, AX2JStyle> getSystemThemes() {
183184

184185
public static HashMap<String, AX2JStyle> getSystem(HashMap<String, AX2JStyle> map, String block) {
185186
if (map.size() == 0) {
186-
File dat = new File(Config.DAT_PATH);
187-
if (!dat.isFile()) {
187+
String content = readFile(Config.DAT_PATH, block);
188+
if (content.isEmpty()) {
188189
throw new AndroidDocException(AndroidDocException.DAT_READ_ERROR);
189190
}
190-
191191
Document document = DocumentHelper.createDocument();
192-
String content = readFile(dat.getPath(), block);
193192
String[] stylesString = content.split("\n");
194193
for (String styleString : stylesString) {
195194
int index1 = styleString.indexOf(',');
@@ -258,9 +257,24 @@ public static boolean appendFile(String filePath, String content) {
258257
* @param block
259258
* @return content of file between the block, return "" if error occurs
260259
*/
260+
@SuppressWarnings("resource")
261261
public static String readFile(String filePath, String block) {
262+
InputStream inputStream = null;
263+
// from project
262264
try {
263-
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath)), Config.ENCODE));
265+
inputStream = new FileInputStream(filePath);
266+
} catch (FileNotFoundException e) {
267+
}
268+
// from jar
269+
if (inputStream == null) {
270+
inputStream = Utils.class.getResourceAsStream("/" + filePath);
271+
}
272+
if (inputStream == null) {
273+
System.out.println("can not find file " + filePath);
274+
return "";
275+
}
276+
try {
277+
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Config.ENCODE));
264278
String content = "";
265279
String buf;
266280

@@ -279,10 +293,16 @@ public static String readFile(String filePath, String block) {
279293
}
280294
}
281295
reader.close();
296+
inputStream.close();
282297
return content;
283298
}
284-
catch( Exception e ) {
299+
catch(Exception e) {
285300
e.printStackTrace();
301+
try {
302+
inputStream.close();
303+
} catch (IOException e1) {
304+
e1.printStackTrace();
305+
}
286306
return "";
287307
}
288308
}

0 commit comments

Comments
 (0)