diff --git a/app/src/main/java/com/rubengees/vocables/utils/TransferUtils.java b/app/src/main/java/com/rubengees/vocables/utils/TransferUtils.java index 660cda9..80fa933 100644 --- a/app/src/main/java/com/rubengees/vocables/utils/TransferUtils.java +++ b/app/src/main/java/com/rubengees/vocables/utils/TransferUtils.java @@ -30,18 +30,23 @@ */ public class TransferUtils { - public static final String TAG_UNITS = "units"; - public static final String TAG_UNIT = "unit"; - public static final String TAG_TITLE = "title"; - public static final String TAG_VOCABLES = "vocables"; - public static final String TAG_VOCABLE = "vocable"; - public static final String TAG_FIRST_MEANING = "first_meaning"; - public static final String TAG_SECOND_MEANING = "second_meaning"; - public static final String TAG_VALUE = "value"; + private static final String TAG_UNITS = "units"; + private static final String TAG_UNIT = "unit"; + private static final String TAG_TITLE = "title"; + private static final String TAG_VOCABLES = "vocables"; + private static final String TAG_VOCABLE = "vocable"; + private static final String TAG_FIRST_MEANING = "first_meaning"; + private static final String TAG_SECOND_MEANING = "second_meaning"; + private static final String TAG_VALUE = "value"; + private static final String TAG_HINT = "hint"; + + private static final String EMPTY = ""; + private static final String EXTENSION_CSV = ".csv"; + private static final String EXTENSION_XML = ".xml"; public static boolean isFileSupported(@NonNull File file) { String filename = file.getName(); - return filename.endsWith(".csv") || filename.endsWith(".xml"); + return filename.endsWith(EXTENSION_CSV) || filename.endsWith(EXTENSION_XML); } public static void export(@NonNull List units, @NonNull File toExport) @@ -74,6 +79,13 @@ private static void writeXml(@NonNull XmlSerializer serializer, @NonNull List getList(@NonNull Context context, @NonNull File file) throws FormatException, IOException { - if (file.getName().endsWith(".csv")) { + if (file.getName().endsWith(EXTENSION_CSV)) { return parseCsv(context, file); - } else if (file.getName().endsWith(".xml")) { + } else if (file.getName().endsWith(EXTENSION_XML)) { return parseXml(context, file); } else { throw new FormatException(context.getString(R.string.transfer_import_format_error)); @@ -204,10 +216,20 @@ private static List getVocablesFromXml(XmlPullParser parser, long creat parser.require(XmlPullParser.START_TAG, null, TAG_VOCABLES); while (parser.nextTag() != XmlPullParser.END_TAG) { parser.require(XmlPullParser.START_TAG, null, TAG_VOCABLE); + Vocable vocable = null; while (parser.nextTag() != XmlPullParser.END_TAG) { MeaningList first; MeaningList second; + if(vocable != null) { + String hint = readOptionalHint(parser); + if(hint != null) { + vocable.setHint(hint); + vocable = null; + continue; + } + } + parser.require(XmlPullParser.START_TAG, null, TAG_FIRST_MEANING); first = getMeaningFromXml(parser); parser.require(XmlPullParser.END_TAG, null, TAG_FIRST_MEANING); @@ -215,7 +237,8 @@ private static List getVocablesFromXml(XmlPullParser parser, long creat parser.require(XmlPullParser.START_TAG, null, TAG_SECOND_MEANING); second = getMeaningFromXml(parser); parser.require(XmlPullParser.END_TAG, null, TAG_SECOND_MEANING); - result.add(new Vocable(first, second, null, creationTime)); + vocable = new Vocable(first, second, null, creationTime); + result.add(vocable); } } parser.require(XmlPullParser.END_TAG, null, TAG_VOCABLES); @@ -224,6 +247,17 @@ private static List getVocablesFromXml(XmlPullParser parser, long creat return result; } + private static String readOptionalHint(XmlPullParser parser) { + try { + parser.require(XmlPullParser.START_TAG, null, TAG_HINT); + String hint = parser.nextText(); + parser.require(XmlPullParser.END_TAG, null, TAG_HINT); + return hint == null? EMPTY : hint; + } catch(IOException | XmlPullParserException e) { + return null; + } + } + private static MeaningList getMeaningFromXml(XmlPullParser parser) throws IOException, XmlPullParserException { List words = new ArrayList<>(); diff --git a/build.gradle b/build.gradle index 7e197f0..909bce6 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { maven { url 'https://maven.fabric.io/public' } } dependencies { - classpath 'com.android.tools.build:gradle:1.5.0' + classpath 'com.android.tools.build:gradle:3.0.1' classpath 'io.fabric.tools:gradle:1.20.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ece8d9b..a80c1bb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Nov 03 13:52:32 CET 2015 +#Sat Mar 10 15:18:16 CET 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip