@Override public IResourceId create(HttpCallsConfiguration httpCallsConfiguration) throws ResourceStoreException { return httpCallsResourceStore.create(httpCallsConfiguration); }
@Override public void delete(String id, Integer version) throws ResourceStoreException, ResourceModifiedException, ResourceNotFoundException { parserResourceStore.delete(id, version); }
@Override public void deleteAllPermanently(String id) { parserResourceStore.deleteAllPermanently(id); }
private void checkIfFoundAndLatest(String id, Integer version, IResourceStorage.IResource resource) throws ResourceNotFoundException, ResourceModifiedException { if (resource == null) { IResourceStorage.IHistoryResource historyLatest = resourceStorage.readHistoryLatest(id); if (historyLatest == null || historyLatest.isDeleted() || version > historyLatest.getVersion()) { throw createResourceNotFoundException(id, version); } throw createResourceAlreadyModifiedException(id, version); } }
@Override public ParserConfiguration read(String id, Integer version) throws ResourceNotFoundException, ResourceStoreException { return parserResourceStore.read(id, version); }
@Override public IResourceId getCurrentResourceId(String id) throws ResourceNotFoundException { return httpCallsResourceStore.getCurrentResourceId(id); } }
@Inject public RegularDictionaryStore(MongoDatabase database, IDocumentBuilder documentBuilder) { RuntimeUtilities.checkNotNull(database, "database"); final String collectionName = "regulardictionaries"; MongoResourceStorage<RegularDictionaryConfiguration> resourceStorage = new MongoResourceStorage<>(database, collectionName, documentBuilder, RegularDictionaryConfiguration.class); this.regularDictionaryResourceStore = new HistorizedResourceStore<>(resourceStorage); }
@Override public Integer update(String id, Integer version, ParserConfiguration content) throws ResourceStoreException, ResourceModifiedException, ResourceNotFoundException { return parserResourceStore.update(id, version, content); }
@Override public synchronized void delete(String id, Integer version) throws IResourceStore.ResourceModifiedException, IResourceStore.ResourceNotFoundException { RuntimeUtilities.checkNotNull(id, "id"); RuntimeUtilities.checkNotNull(version, "version"); IResourceStorage.IResource resource = resourceStorage.read(id, version); checkIfFoundAndLatest(id, version, resource); IResourceStorage.IHistoryResource historyResource = resourceStorage.newHistoryResourceFor(resource, true); resourceStorage.store(historyResource); resourceStorage.remove(id); }
@Override public T read(String id, Integer version) throws IResourceStore.ResourceNotFoundException, IResourceStore.ResourceStoreException { RuntimeUtilities.checkNotNull(id, "id"); RuntimeUtilities.checkNotNull(version, "version"); IResourceStorage.IResource<T> current = resourceStorage.read(id, version); if (current == null) { IResourceStorage.IHistoryResource historyResource = resourceStorage.readHistory(id, version); if (historyResource == null || historyResource.isDeleted()) { throw createResourceNotFoundException(id, version); } current = historyResource; } try { return current.getData(); } catch (IOException e) { String message = "Unable to deserialize resource (id=%s, version=%s)"; message = String.format(message, id, version); throw new IResourceStore.ResourceStoreException(message, e); } }
@Override public OutputConfigurationSet read(String id, Integer version) throws ResourceNotFoundException, ResourceStoreException { return outputResourceStore.read(id, version); }
@Override public IResourceId getCurrentResourceId(String id) throws ResourceNotFoundException { return parserResourceStore.getCurrentResourceId(id); } }
@Inject public OutputStore(MongoDatabase database, IDocumentBuilder documentBuilder) { RuntimeUtilities.checkNotNull(database, "database"); final String collectionName = "outputs"; MongoResourceStorage<OutputConfigurationSet> resourceStorage = new MongoResourceStorage<>(database, collectionName, documentBuilder, OutputConfigurationSet.class); this.outputResourceStore = new HistorizedResourceStore<>(resourceStorage); }
@Override public Integer update(String id, Integer version, HttpCallsConfiguration httpCallsConfiguration) throws ResourceStoreException, ResourceModifiedException, ResourceNotFoundException { return httpCallsResourceStore.update(id, version, httpCallsConfiguration); }
@Override public Integer update(String id, Integer version, T content) throws IResourceStore.ResourceStoreException, IResourceStore.ResourceModifiedException, IResourceStore.ResourceNotFoundException { RuntimeUtilities.checkNotNull(id, "id"); RuntimeUtilities.checkNotNull(version, "version"); RuntimeUtilities.checkNotNull(content, "content"); IResourceStorage.IResource resource = resourceStorage.read(id, version); checkIfFoundAndLatest(id, version, resource); IResourceStorage.IHistoryResource history = resourceStorage.newHistoryResourceFor(resource, false); resourceStorage.store(history); try { Integer newVersion = resource.getVersion() + 1; IResourceStorage.IResource newResource = resourceStorage.newResource(resource.getId(), newVersion, content); resourceStorage.store(newResource); return newVersion; } catch (IOException e) { throw new IResourceStore.ResourceStoreException(e.getLocalizedMessage(), e); } }
@Override public BehaviorConfiguration read(String id, Integer version) throws ResourceStoreException, ResourceNotFoundException { return behaviorResourceStore.read(id, version); }
@Override public IResourceId getCurrentResourceId(String id) throws ResourceNotFoundException { return behaviorResourceStore.getCurrentResourceId(id); }
@Inject public HttpCallsStore(MongoDatabase database, IDocumentBuilder documentBuilder) { RuntimeUtilities.checkNotNull(database, "database"); final String collectionName = "httpcalls"; MongoResourceStorage<HttpCallsConfiguration> resourceStorage = new MongoResourceStorage<>(database, collectionName, documentBuilder, HttpCallsConfiguration.class); this.httpCallsResourceStore = new HistorizedResourceStore<>(resourceStorage); }
@Override public IResourceId create(ParserConfiguration parserConfiguration) throws ResourceStoreException { return parserResourceStore.create(parserConfiguration); }
@Override public synchronized Integer update(String id, Integer version, BehaviorConfiguration behaviorConfiguration) throws ResourceStoreException, ResourceModifiedException, ResourceNotFoundException { RuntimeUtilities.checkCollectionNoNullElements(behaviorConfiguration.getBehaviorGroups(), "behaviorGroups"); return behaviorResourceStore.update(id, version, behaviorConfiguration); }