List of usage examples for com.google.gson.stream JsonReader hasNext
public boolean hasNext() throws IOException
From source file:com.miki.webapp.webservicerestful.MikiWsJsonTools.java
/** * Cette methode permet de renvoyer un map contenant les attributs(pass en parametre) et leurs valeurs * @param urlwebservice url du webservice (faire reference un renvoie d'un * seul objet)/*from w ww. j av a2s .c o m*/ * @param listeAttribut une liste des attributs a chercher dans le Json * @return un Map */ public Map<String, String> getObjetLectureJsonFromUrl(String urlwebservice, List<String> listeAttribut) { try { if (!listeAttribut.isEmpty()) { String json = MikiWsTools.get(urlwebservice); final JsonReader reader = new JsonReader(new StringReader(json)); Map<String, String> resultat = new HashMap<>(); reader.beginObject(); while (reader.hasNext()) { final String name = reader.nextName(); int iter = 0; for (String attribut : listeAttribut) { if (name.equals(attribut)) { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); resultat.put(attribut, null); } else { resultat.put(attribut, reader.nextString()); } } else { iter++; } } if (iter == listeAttribut.size()) { reader.skipValue(); } } reader.endObject(); return resultat; } else { return null; } } catch (IOException e) { e.printStackTrace(); System.out.println("Echec de l'opration"); return null; } }
From source file:com.miki.webapp.webservicerestful.MikiWsJsonTools.java
/** * Cette methode permet de renvoyer un map contenant les attributs(pass en parametre) et leurs valeurs * @param json les donnes en format json * @param listeAttribut une liste des attributs a chercher dans le Json * @return un Map/*from w ww .j av a 2 s . c o m*/ */ public Map<String, String> getObjetLectureJson(String json, List<String> listeAttribut) { try { if (!listeAttribut.isEmpty()) { final JsonReader reader = new JsonReader(new StringReader(json)); Map<String, String> resultat = new HashMap<>(); reader.beginObject(); while (reader.hasNext()) { final String name = reader.nextName(); int iter = 0; for (String attribut : listeAttribut) { if (name.equals(attribut)) { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); resultat.put(attribut, null); } else { resultat.put(attribut, reader.nextString()); } } else { iter++; } } if (iter == listeAttribut.size()) { reader.skipValue(); } } reader.endObject(); return resultat; } else { return null; } } catch (IOException e) { e.printStackTrace(); System.out.println("Echec de l'opration"); return null; } }
From source file:com.netease.flume.taildirSource.ReliableTaildirEventReader.java
License:Apache License
/** * Load a position file which has the last read position of each file. If the position file exists, update tailFiles * mapping./* w ww . ja v a 2 s . c o m*/ */ public void loadPositionFile(String filePath) { Long inode, pos; String path; FileReader fr = null; JsonReader jr = null; try { fr = new FileReader(filePath); jr = new JsonReader(fr); jr.beginArray(); while (jr.hasNext()) { inode = null; pos = null; path = null; jr.beginObject(); while (jr.hasNext()) { switch (jr.nextName()) { case "inode": inode = jr.nextLong(); break; case "pos": pos = jr.nextLong(); break; case "file": path = jr.nextString(); break; } } jr.endObject(); for (Object v : Arrays.asList(inode, pos, path)) { Preconditions.checkNotNull(v, "Detected missing value in position file. " + "inode: " + inode + ", pos: " + pos + ", path: " + path); } TailFile tf = tailFiles.get(inode); if (tf != null && tf.updatePos(path, inode, pos)) { tailFiles.put(inode, tf); } else { logger.info("Missing file: " + path + ", inode: " + inode + ", pos: " + pos); } } jr.endArray(); } catch (FileNotFoundException e) { logger.info("File not found: " + filePath + ", not updating position"); } catch (IOException e) { logger.error("Failed loading positionFile: " + filePath, e); } finally { try { if (fr != null) fr.close(); if (jr != null) jr.close(); } catch (IOException e) { logger.error("Error: " + e.getMessage(), e); } } }
From source file:com.nit.async.DeckTask.java
License:Open Source License
private TaskData doInBackgroundImportReplace(TaskData... params) { // Log.i(AnkiDroidApp.TAG, "doInBackgroundImportReplace"); Collection col = params[0].getCollection(); String path = params[0].getString(); Resources res = AnkiDroidApp.getInstance().getBaseContext().getResources(); // extract the deck from the zip file String fileDir = AnkiDroidApp.getCurrentAnkiDroidDirectory() + "/tmpzip"; File dir = new File(fileDir); if (dir.exists()) { BackupManager.removeDir(dir);/*from w w w . j av a2 s .c om*/ } publishProgress(new TaskData(res.getString(R.string.import_unpacking))); // from anki2.py String colFile = fileDir + "/collection.anki2"; ZipFile zip; try { zip = new ZipFile(new File(path)); } catch (IOException e) { Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - Error while unzipping: ", e); AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace0"); return new TaskData(false); } if (!Utils.unzipFiles(zip, fileDir, new String[] { "collection.anki2", "media" }, null) || !(new File(colFile)).exists()) { return new TaskData(-2, null, false); } Collection tmpCol = null; try { tmpCol = Storage.Collection(colFile); if (!tmpCol.validCollection()) { tmpCol.close(); return new TaskData(-2, null, false); } } finally { if (tmpCol != null) { tmpCol.close(); } } publishProgress(new TaskData(res.getString(R.string.importing_collection))); String colPath; if (col != null) { // unload collection and trigger a backup colPath = col.getPath(); AnkiDroidApp.closeCollection(true); BackupManager.performBackup(colPath, true); } // overwrite collection colPath = AnkiDroidApp.getCollectionPath(); File f = new File(colFile); f.renameTo(new File(colPath)); int addedCount = -1; try { col = AnkiDroidApp.openCollection(colPath); // because users don't have a backup of media, it's safer to import new // data and rely on them running a media db check to get rid of any // unwanted media. in the future we might also want to duplicate this step // import media HashMap<String, String> nameToNum = new HashMap<String, String>(); HashMap<String, String> numToName = new HashMap<String, String>(); File mediaMapFile = new File(fileDir, "media"); if (mediaMapFile.exists()) { JsonReader jr = new JsonReader(new FileReader(mediaMapFile)); jr.beginObject(); String name; String num; while (jr.hasNext()) { num = jr.nextName(); name = jr.nextString(); nameToNum.put(name, num); numToName.put(num, name); } jr.endObject(); jr.close(); } String mediaDir = col.getMedia().getDir(); int total = nameToNum.size(); int i = 0; for (Map.Entry<String, String> entry : nameToNum.entrySet()) { String file = entry.getKey(); String c = entry.getValue(); File of = new File(mediaDir, file); if (!of.exists()) { Utils.unzipFiles(zip, mediaDir, new String[] { c }, numToName); } ++i; publishProgress(new TaskData(res.getString(R.string.import_media_count, (i + 1) * 100 / total))); } zip.close(); // delete tmp dir BackupManager.removeDir(dir); publishProgress(new TaskData(res.getString(R.string.import_update_counts))); // Update the counts DeckTask.TaskData result = doInBackgroundLoadDeckCounts(new TaskData(col)); if (result == null) { return null; } return new TaskData(addedCount, result.getObjArray(), true); } catch (RuntimeException e) { Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - RuntimeException: ", e); AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace1"); return new TaskData(false); } catch (FileNotFoundException e) { Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - FileNotFoundException: ", e); AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace2"); return new TaskData(false); } catch (IOException e) { Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - IOException: ", e); AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace3"); return new TaskData(false); } }
From source file:com.nit.libanki.importer.Anki2Importer.java
License:Open Source License
public int run(boolean currDeckImport) { publishProgress(false, 0, 0, false); try {//from w w w. j ava 2 s. co m // extract the deck from the zip file String tempDir = AnkiDroidApp.getCurrentAnkiDroidDirectory() + "/tmpzip"; // from anki2.py String colFile = tempDir + "/collection.anki2"; if (!Utils.unzipFiles(mZip, tempDir, new String[] { "collection.anki2", "media" }, null) || !(new File(colFile)).exists() || !Storage.Collection(colFile).validCollection()) { return -2; } // we need the media dict in advance, and we'll need a map of fname number to use during the import File mediaMapFile = new File(tempDir, "media"); HashMap<String, String> numToName = new HashMap<String, String>(); if (mediaMapFile.exists()) { JsonReader jr = new JsonReader(new FileReader(mediaMapFile)); jr.beginObject(); String name; String num; while (jr.hasNext()) { num = jr.nextName(); name = jr.nextString(); nameToNum.put(name, num); numToName.put(num, name); } jr.endObject(); jr.close(); } _prepareFiles(colFile); publishProgress(true, 0, 0, false); int cnt = -1; try { cnt = _import(currDeckImport); } finally { // do not close collection but close only db (in order not to confuse access counting in storage.java // Note that the media database is still open and needs to be closed below. AnkiDatabaseManager.closeDatabase(mSrc.getPath()); } // import static media String mediaDir = mCol.getMedia().getDir(); if (nameToNum.size() != 0) { for (Map.Entry<String, String> entry : nameToNum.entrySet()) { String file = entry.getKey(); String c = entry.getValue(); if (!file.startsWith("_") && !file.startsWith("latex-")) { continue; } File of = new File(mediaDir, file); if (!of.exists()) { Utils.unzipFiles(mZip, mediaDir, new String[] { c }, numToName); } } } mZip.close(); mSrc.getMedia().close(); // delete tmp dir File dir = new File(tempDir); BackupManager.removeDir(dir); publishProgress(true, 100, 100, true); return cnt; } catch (RuntimeException e) { Log.e(AnkiDroidApp.TAG, "RuntimeException while importing ", e); return -1; } catch (IOException e) { Log.e(AnkiDroidApp.TAG, "IOException while importing ", e); return -1; } }
From source file:com.nridge.core.io.gson.DataBagJSON.java
License:Open Source License
/** * Parses an JSON stream and loads it into a bag/table. * * @param aReader Json reader stream instance. * * @throws java.io.IOException I/O related exception. *///from w w w .j av a2 s.c om public void load(JsonReader aReader) throws IOException { DataField dataField; String jsonName, jsonValue; aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); if (StringUtils.equals(jsonName, IO.JSON_NAME_MEMBER_NAME)) mBag.setName(aReader.nextString()); else if (StringUtils.equals(jsonName, IO.JSON_TITLE_MEMBER_NAME)) mBag.setTitle(aReader.nextString()); else if (StringUtils.equals(jsonName, IO.JSON_FEATURES_ARRAY_NAME)) { aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); jsonValue = aReader.nextString(); mBag.addFeature(jsonName, jsonValue); } aReader.endObject(); } else if (StringUtils.equals(jsonName, IO.JSON_FIELDS_ARRAY_NAME)) { aReader.beginArray(); while (aReader.hasNext()) { dataField = mDataFieldJSON.load(aReader); if (dataField != null) mBag.add(dataField); } aReader.endArray(); } else aReader.skipValue(); } aReader.endObject(); }
From source file:com.nridge.core.io.gson.DataFieldJSON.java
License:Open Source License
private void assignFieldNameValue(DataField aField, String aName, JsonReader aReader) throws IOException { if (StringUtils.equals(aName, IO.JSON_TITLE_MEMBER_NAME)) aField.setTitle(aReader.nextString()); else if (StringUtils.equals(aName, "displaySize")) aField.setDisplaySize(aReader.nextInt()); else if (StringUtils.equals(aName, "defaultValue")) aField.setDefaultValue(aReader.nextString()); else if (StringUtils.equals(aName, "sortOrder")) aField.setSortOrder(Field.Order.valueOf(aReader.nextString())); else if (StringUtils.equals(aName, "isMultiValue")) aField.setMultiValueFlag(aReader.nextBoolean()); else if (StringUtils.equals(aName, IO.JSON_RANGE_OBJECT_NAME)) aField.setRange(mRangeJSON.load(aReader)); else if (StringUtils.equals(aName, IO.JSON_FEATURES_ARRAY_NAME)) { String jsonName, jsonValue; aReader.beginObject();//from www. jav a2 s . com while (aReader.hasNext()) { jsonName = aReader.nextName(); jsonValue = aReader.nextString(); aField.addFeature(jsonName, jsonValue); } aReader.endObject(); } else if (StringUtils.equals(aName, IO.JSON_VALUE_MEMBER_NAME)) { String jsonValue = aReader.nextString(); if (aField.isMultiValue()) { String mvDelimiter = aField.getFeature(Field.FEATURE_MV_DELIMITER); if (StringUtils.isNotEmpty(mvDelimiter)) aField.expand(jsonValue, mvDelimiter.charAt(0)); else aField.expand(jsonValue); } else aField.setValue(jsonValue); } }
From source file:com.nridge.core.io.gson.DataFieldJSON.java
License:Open Source License
/** * Parses aJSON formatted input reader stream and loads it into a field. * * @param aReader Input reader stream instance. * * @return DataField instance.//from www. j a va2 s .c o m * * @throws java.io.IOException I/O related exception. */ public DataField load(JsonReader aReader) throws IOException { String jsonName; DataField dataField = null; String fieldName = StringUtils.EMPTY; String fieldType = Field.typeToString(Field.Type.Text); aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); if (StringUtils.equals(jsonName, IO.JSON_NAME_MEMBER_NAME)) fieldName = aReader.nextString(); else if (StringUtils.equals(jsonName, IO.JSON_TYPE_MEMBER_NAME)) fieldType = aReader.nextString(); else { if (dataField == null) { if ((StringUtils.isNotEmpty(fieldName)) && (StringUtils.isNotEmpty(fieldType))) dataField = new DataField(Field.stringToType(fieldType), fieldName); else throw new IOException("JSON Parser: Data field is missing name/type field."); } assignFieldNameValue(dataField, jsonName, aReader); } } aReader.endObject(); // OK - if we get here and the data field is null, then the JSON lacked a value field. if (dataField == null) { if ((StringUtils.isNotEmpty(fieldName)) && (StringUtils.isNotEmpty(fieldType))) dataField = new DataField(Field.stringToType(fieldType), fieldName); else throw new IOException("JSON Parser: Data field is missing name/type field."); } return dataField; }
From source file:com.nridge.core.io.gson.DataTableJSON.java
License:Open Source License
/** * Parses an JSON stream and loads it into a bag/table. * * @param aReader Json reader stream instance. * * @throws java.io.IOException I/O related exception. *///from w w w .j a v a2s . co m public void load(JsonReader aReader) throws IOException { int columnOffset; FieldRow fieldRow; DataField dataField; String jsonName, jsonValue, mvDelimiter; resetContext(); aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); if (StringUtils.equals(jsonName, IO.JSON_NAME_MEMBER_NAME)) mDataTable.setName(aReader.nextString()); else if (StringUtils.equals(jsonName, IO.JSON_CONTEXT_OBJECT_NAME)) { aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); if (StringUtils.equals(jsonName, IO.JSON_START_MEMBER_NAME)) mContextStart = aReader.nextInt(); else if (StringUtils.equals(jsonName, IO.JSON_LIMIT_MEMBER_NAME)) mContextLimit = aReader.nextInt(); else if (StringUtils.equals(jsonName, IO.JSON_TOTAL_MEMBER_NAME)) mContextTotal = aReader.nextInt(); else aReader.skipValue(); } aReader.endObject(); } else if (StringUtils.equals(jsonName, IO.JSON_BAG_OBJECT_NAME)) { DataBagJSON dataBagJSON = new DataBagJSON(); dataBagJSON.load(aReader); mDataTable.setColumns(dataBagJSON.getBag()); } else if (StringUtils.equals(jsonName, IO.JSON_ROWS_ARRAY_NAME)) { aReader.beginArray(); while (aReader.hasNext()) { columnOffset = 0; fieldRow = mDataTable.newRow(); aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); if (StringUtils.equals(jsonName, IO.JSON_CELL_MEMBER_NAME)) { jsonValue = aReader.nextString(); dataField = mDataTable.getColumn(columnOffset); if (dataField != null) { if (dataField.isMultiValue()) { mvDelimiter = dataField.getFeature(Field.FEATURE_MV_DELIMITER); if (StringUtils.isNotEmpty(mvDelimiter)) fieldRow.setValues(columnOffset, StrUtl.expandToList(jsonValue, mvDelimiter.charAt(0))); else fieldRow.setValues(columnOffset, StrUtl.expandToList(jsonValue, StrUtl.CHAR_PIPE)); } else fieldRow.setValue(columnOffset, jsonValue); columnOffset++; } } else aReader.skipValue(); } aReader.endObject(); mDataTable.addRow(fieldRow); } aReader.endArray(); } else aReader.skipValue(); } aReader.endObject(); }
From source file:com.nridge.core.io.gson.DocumentJSON.java
License:Open Source License
private void loadACL(JsonReader aReader, Document aDocument) throws IOException { String jsonName, aceName, aceValue; HashMap<String, String> docACL = aDocument.getACL(); aReader.beginArray();/*from ww w.j a va2 s . c o m*/ while (aReader.hasNext()) { aceName = StringUtils.EMPTY; aReader.beginObject(); while (aReader.hasNext()) { jsonName = aReader.nextName(); if (StringUtils.equals(jsonName, IO.JSON_NAME_MEMBER_NAME)) aceName = aReader.nextString(); else if (StringUtils.equals(jsonName, IO.JSON_VALUE_MEMBER_NAME)) { aceValue = aReader.nextString(); if (StringUtils.isNotEmpty(aceName)) docACL.put(aceName, aceValue); } else aReader.skipValue(); } aReader.endObject(); } aReader.endArray(); }