/** * Removes an existing stored query. * * @param query The stored query */ public void removeStoredQuery(StoredQuery query) { storedQueryDir().get(toFilename(query.getName())).delete(); }
/** * Retrieves a stored query by name. * * @param name Identifying name of the stored query. */ public StoredQuery getStoredQuery(String name) { // default? if (StoredQuery.DEFAULT.getName().equals(name)) { return StoredQuery.DEFAULT; } try { Resource res = storedQueryDir().get(toFilename(name)); if (res.getType() != Type.RESOURCE) { return null; } return parseStoredQuery(res); } catch (Exception e) { throw new RuntimeException("Error accessign stoed query: " + name, e); } }
/** * Persists a stored query, overwriting it if the query already exists. * * @param query The stored query. */ public void putStoredQuery(StoredQuery query) { try { Resource dir = storedQueryDir(); Resource f = dir.get(toFilename(query.getName())); if (f.getType() != Type.UNDEFINED) { // TODO: back up the old file in case there is an error during encoding } BufferedOutputStream bout = new BufferedOutputStream(f.out()); try { Encoder e = new Encoder(new WFSConfiguration()); e.setRootElementType(WFS.StoredQueryDescriptionType); e.encode( query.getQuery(), WFS.StoredQueryDescription, new BufferedOutputStream(bout)); bout.flush(); } finally { bout.close(); } } catch (IOException e) { throw new RuntimeException("i/o error listing stored queries", e); } }