From b5c01f640f72f187bc1df802107037524ad4d79f Mon Sep 17 00:00:00 2001 From: Liew Jun Tung Date: Sat, 4 Jul 2015 03:35:56 +0800 Subject: [PATCH] done with adding commas as feature --- plugin/META-INF/plugin.xml | 6 +++-- .../pandawarrior/androidXMLConverter/GUI.java | 22 +++++++-------- .../groovy/org/pandawarrior/ReadXml.groovy | 8 +++--- .../groovy/org/pandawarrior/WriteXml.groovy | 27 ++++++++++++------- xml_csv_parse/xml_csv_parse.iml | 2 ++ 5 files changed, 39 insertions(+), 26 deletions(-) diff --git a/plugin/META-INF/plugin.xml b/plugin/META-INF/plugin.xml index 19b7f73..cdae910 100644 --- a/plugin/META-INF/plugin.xml +++ b/plugin/META-INF/plugin.xml @@ -1,7 +1,7 @@ com.pandawarrior.androidXMLConverter Android Strings.xml To CSV Converter - 1.1.1 + 1.2.0 Liew Jun Tung You can access the plugin from the "Tools" menu at the IDE toolbar


Changelog

-

1.1.1

+

+

1.2.0

+

Support commas in data now

Fixes plugin bug of displaying "Success" even though there are errors

GitHub ]]>
diff --git a/plugin/src/org/pandawarrior/androidXMLConverter/GUI.java b/plugin/src/org/pandawarrior/androidXMLConverter/GUI.java index 99bd989..a502d0c 100644 --- a/plugin/src/org/pandawarrior/androidXMLConverter/GUI.java +++ b/plugin/src/org/pandawarrior/androidXMLConverter/GUI.java @@ -38,7 +38,7 @@ public class GUI extends DialogWrapper { private JRadioButton arraysXmlRadioButton; private String currentFolder; private String selected; - private final static String ERROR_MSG1 = "Error! Your might a data that is empty. use 'null' or ' '(with a space) to replace it. "; + private final static String ERROR_MSG1 = "Error! "; public GUI(Project project, String initialFolder) { super(project, true); @@ -177,12 +177,12 @@ public void run() { } else if (selected.equals("plurals.xml")) { WriteXml.parseArray(csv, folder, WriteXml.getPLURALS_FILE()); } - xcReadField.setText(""); - xcWriteField.setText(""); - xcLabel.setText("SUCCESS!"); - xcLabel.setForeground(JBColor.GREEN); + cxReadField.setText(""); + cxWriteField.setText(""); + cxLabel.setText("SUCCESS!"); + cxLabel.setForeground(JBColor.GREEN); } catch (ArrayIndexOutOfBoundsException e1) { - cxLabel.setText(ERROR_MSG1); + cxLabel.setText(ERROR_MSG1 + e1.getMessage()); cxLabel.setForeground(JBColor.RED); } @@ -197,12 +197,12 @@ private void readXML(final String folder, final String csv) throws ArrayIndexOut public void run() { try { ReadXml.parseAll(folder, csv); - cxReadField.setText(""); - cxLabel.setText("SUCCESS!"); - cxLabel.setForeground(JBColor.GREEN); + xcReadField.setText(""); + xcLabel.setText("SUCCESS!"); + xcLabel.setForeground(JBColor.GREEN); } catch (Exception e) { - cxLabel.setText(ERROR_MSG1); - cxLabel.setForeground(JBColor.RED); + xcLabel.setText(ERROR_MSG1 + e.getMessage()); + xcLabel.setForeground(JBColor.RED); } } diff --git a/xml_csv_parse/src/main/groovy/org/pandawarrior/ReadXml.groovy b/xml_csv_parse/src/main/groovy/org/pandawarrior/ReadXml.groovy index 9c1f0bf..bcc78e2 100644 --- a/xml_csv_parse/src/main/groovy/org/pandawarrior/ReadXml.groovy +++ b/xml_csv_parse/src/main/groovy/org/pandawarrior/ReadXml.groovy @@ -170,7 +170,7 @@ class ReadXml { def tempXml = new XmlSlurper().parseText(xmlFile) def tempResources = tempXml.string tempResources.each { - tempMap[it.@name as String] = it.text().replaceAll(",", "@@") + tempMap[it.@name as String] = it.text() } mainMap[it.key] = tempMap // println mainMap @@ -221,10 +221,10 @@ class ReadXml { protected static String createCSV(List headerList, List valueList) { String csv - csv = headerList.join(",") + "\n" + csv = '\"'+headerList.join('\",\"') + '\"\n' valueList.each { - csv += it.collect({it!=null?it:" "}).join(",") - csv += "\n" + csv += it.collect({it!=null?"\"${it}\"":'\"\"'}).join(',') + csv += '\n' } return csv } diff --git a/xml_csv_parse/src/main/groovy/org/pandawarrior/WriteXml.groovy b/xml_csv_parse/src/main/groovy/org/pandawarrior/WriteXml.groovy index 8430aa7..ecd93fb 100644 --- a/xml_csv_parse/src/main/groovy/org/pandawarrior/WriteXml.groovy +++ b/xml_csv_parse/src/main/groovy/org/pandawarrior/WriteXml.groovy @@ -9,6 +9,7 @@ class WriteXml { final static String ARRAY_FILE = "arrays" final static String PLURALS_FILE = "plurals" + private static final String REGEX = /,(?=([^\"]*\"[^\"]*\")*[^\"]*$)/ static boolean parse(String csvPath, String moduleFolder) { //load and split the file @@ -32,21 +33,26 @@ class WriteXml { protected static List getRows(String csvPath) { String csv = new File(csvPath).getText() String[] lines = csv.split('\n') - List rows = lines.collect { it.split(',') } + List rows = lines.collect{ + it.split(REGEX, -1) + } return rows } protected static List getHead(List rows) { List head = rows.get(0) + head = head - "\"name\"" head = head - "name" + head = head - "\"translatable\"" head = head - "translatable" +// println head return head } protected static Map getTransMap(List rows) { Map transMap = [:] for (int i = 1; i < rows.size(); i++) { - transMap[rows[i][0]] = rows[i][1].replaceAll("\\s", "") + transMap[rows[i][0]] = rows[i][1].replaceAll("\"", "") } return transMap } @@ -62,7 +68,7 @@ class WriteXml { def name = column[0] tempMap[name] = column[i + 2] } - mainDict[head[i].replaceAll("\\s", "")] = tempMap + mainDict[head[i].replaceAll("\"", "")] = tempMap } return mainDict } @@ -88,7 +94,7 @@ class WriteXml { } } - mainArrayMap[head[i].replaceAll("\\s", "")] = tempMap + mainArrayMap[head[i].replaceAll("\"", "")] = tempMap } return mainArrayMap } @@ -109,11 +115,14 @@ class WriteXml { xml.resources { mainDictValue.each { def key = it.key - def value = it.value.replaceAll("@@", ",") - if (fileName.equals("values") && transDict[key].equals("false")) { - string(name: key, translatable: transDict[key], value) - } else if (transDict[key].equals("true") && !value.equals("null") && !value.equals(" ")) { - string(name: key, value) + def value = it.value.replaceAll("\"", "") + if (fileName.equals("values") && transDict[key].equals("false") || + fileName.equals("values") && !transDict[key]) { + string(name: key.replaceAll("\"", ""), translatable: transDict[key], value) + } else if (transDict[key].equals("true") && !value.equals("null") && !value.equals("") || + transDict[key] && !value.equals("null") && !value.equals("") + ) { + string(name: key.replaceAll("\"", ""), value) } } } diff --git a/xml_csv_parse/xml_csv_parse.iml b/xml_csv_parse/xml_csv_parse.iml index 8355cfb..7907752 100644 --- a/xml_csv_parse/xml_csv_parse.iml +++ b/xml_csv_parse/xml_csv_parse.iml @@ -20,5 +20,7 @@ + + \ No newline at end of file