@Override public Date readDatetimeValue(String spaceKey, String propertyName) throws IOException { Date lastDate = null; String documentName = prepareValueStoreDocumentName(spaceKey, propertyName); if (logger.isDebugEnabled()) logger.debug( "Going to read datetime value from {} property for space {}. Document name is {}.", propertyName, spaceKey, documentName); refreshSearchIndex(getRiverIndexName()); GetResponse lastSeqGetResponse = client .prepareGet(getRiverIndexName(), riverName.name(), documentName) .execute() .actionGet(); if (lastSeqGetResponse.isExists()) { Object timestamp = lastSeqGetResponse.getSourceAsMap().get(STORE_FIELD_VALUE); if (timestamp != null) { lastDate = DateTimeUtils.parseISODateTime(timestamp.toString()); } } else { if (logger.isDebugEnabled()) logger.debug("{} document doesn't exist in remore river persistent store", documentName); } return lastDate; }
/** * Prepare JSON document to be stored inside {@link #storeDatetimeValue(String, String, Date, * BulkRequestBuilder)}. * * @param spaceKey key of Space value is for * @param propertyName name of property * @param datetime value to store * @return JSON document * @throws IOException * @see #storeDatetimeValue(String, String, Date, BulkRequestBuilder) * @see #readDatetimeValue(String, String) */ protected XContentBuilder storeDatetimeValueBuildDocument( String spaceKey, String propertyName, Date datetime) throws IOException { XContentBuilder builder = jsonBuilder().startObject(); if (spaceKey != null) builder.field("spaceKey", spaceKey); builder .field("propertyName", propertyName) .field(STORE_FIELD_VALUE, DateTimeUtils.formatISODateTime(datetime)); builder.endObject(); return builder; }
public void run() { if (NavigineApp.Navigation == null) return; long timeNow = DateTimeUtils.currentTimeMillis(); String userHash = NavigineApp.Settings.getString("user_hash", ""); if (userHash.length() == 0) return; if (mLoader >= 0) updateLoader(); if (Math.abs(timeNow - mUpdateLocationLoadersTime) > 1000) updateLocationLoaders(); }
private void refreshMapList() { if (mLoader >= 0) return; String userHash = NavigineApp.Settings.getString("user_hash", ""); if (userHash.length() == 0) return; // Starting new loader String fileName = LocationLoader.getLocationDir(NavigineApp.AppContext, null) + "/maps.xml"; new File(fileName).delete(); mLoader = LocationLoader.startLocationLoader(null, fileName, true); mLoaderTime = DateTimeUtils.currentTimeMillis(); mInfoList = new ArrayList<LocationInfo>(); Log.d(TAG, String.format(Locale.ENGLISH, "Location loader started: %d", mLoader)); }
private void updateLoader() { if (NavigineApp.Navigation == null) return; // Log.d(TAG, String.format(Locale.ENGLISH, "Update loader: %d", mLoader)); long timeNow = DateTimeUtils.currentTimeMillis(); if (mLoader < 0) return; int status = LocationLoader.checkLocationLoader(mLoader); if (status < 100) { if ((Math.abs(timeNow - mLoaderTime) > LOADER_TIMEOUT / 3 && status == 0) || (Math.abs(timeNow - mLoaderTime) > LOADER_TIMEOUT)) { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText("Loading timeout!\nPlease, check your internet connection!"); Log.d(TAG, String.format(Locale.ENGLISH, "Load stopped on timeout!")); LocationLoader.stopLocationLoader(mLoader); mLoader = -1; } else { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText(String.format(Locale.ENGLISH, "Loading content (%d%%)", status)); } } else { Log.d(TAG, String.format(Locale.ENGLISH, "Load finished with result: %d", status)); LocationLoader.stopLocationLoader(mLoader); mLoader = -1; if (status == 100) { parseMapsXml(); if (mInfoList.isEmpty()) { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText("No locations available"); } else { mListView.setVisibility(View.VISIBLE); mStatusLabel.setVisibility(View.GONE); } } else { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText("Error loading!\nPlease, check your ID!"); } } }
private void updateLocationLoaders() { if (NavigineApp.Navigation == null) return; long timeNow = DateTimeUtils.currentTimeMillis(); mUpdateLocationLoadersTime = timeNow; synchronized (mLoaderMap) { Iterator<Map.Entry<String, LoaderState>> iter = mLoaderMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<String, LoaderState> entry = iter.next(); LoaderState loader = entry.getValue(); if (loader.state < 100) { loader.timeLabel = timeNow; if (loader.type == DOWNLOAD) loader.state = LocationLoader.checkLocationLoader(loader.id); if (loader.type == UPLOAD) loader.state = LocationLoader.checkLocationUploader(loader.id); } else if (loader.state == 100) { String archivePath = NavigineApp.Navigation.getArchivePath(); String locationFile = LocationLoader.getLocationFile(NavigineApp.AppContext, loader.location); if (archivePath != null && archivePath.equals(locationFile)) { Log.d(TAG, "Reloading archive " + archivePath); if (NavigineApp.Navigation.loadArchive(archivePath)) { SharedPreferences.Editor editor = NavigineApp.Settings.edit(); editor.putString("map_file", archivePath); editor.commit(); } } if (loader.type == DOWNLOAD) LocationLoader.stopLocationLoader(loader.id); if (loader.type == UPLOAD) LocationLoader.stopLocationUploader(loader.id); iter.remove(); } else { // Load failed if (Math.abs(timeNow - loader.timeLabel) > 5000) { if (loader.type == DOWNLOAD) LocationLoader.stopLocationLoader(loader.id); if (loader.type == UPLOAD) LocationLoader.stopLocationUploader(loader.id); iter.remove(); } } } } updateLocalVersions(); mAdapter.updateList(); }