public static TransactionType unadapt(TransactionRequest request) { if (request instanceof WFS11) { return (TransactionType) request.getAdaptee(); TransactionType tx = factory.createTransactionType(); tx.setVersion(request.getVersion()); tx.setHandle(request.getHandle()); tx.setLockId(request.getLockId()); tx.setReleaseAction( request.isReleaseActionAll() ? AllSomeType.ALL_LITERAL : AllSomeType.SOME_LITERAL); tx.setBaseUrl(request.getBaseUrl()); tx.setExtendedProperties(request.getExtendedProperties()); for (TransactionElement te : request.getElements()) { if (te instanceof Delete) { tx.getDelete().add(Delete.WFS11.unadapt((Delete) te));
@Override public TransactionRequest beforeTransaction(TransactionRequest request) throws WFSException { if (request.getVersion() == null || !request.getVersion().startsWith("2.0")) { return request; List<TransactionElement> newElements = new ArrayList<>(); for (TransactionElement element : request.getElements()) { if (element instanceof Insert) { for (Object of : ((Insert) element).getFeatures()) { request.setElements(newElements);
public static TransactionRequest replaceWithFixedRoadsDelete( Catalog catalog, TransactionRequest request) { List<TransactionElement> transactionElements = new ArrayList<>(); // create a delete Delete delete = request.createDelete(); try { delete.setTypeName( new QName( MockData.ROAD_SEGMENTS.getNamespaceURI(), MockData.ROAD_SEGMENTS.getLocalPart())); delete.setFilter(CQL.toFilter("FID = 106")); } catch (Exception e) { throw new RuntimeException(e); } transactionElements.add(delete); request.setElements(transactionElements); return request; }
transaction.putProperty("VersioningCommitMessage", request.getHandle()); Map<?, ?> extendedProperties = request.getExtendedProperties(); if (extendedProperties != null) { for (Entry<?, ?> e : extendedProperties.entrySet()) {
if (request.getReleaseAction() == null) { request.setReleaseActionAll(); request.setTransaction(transaction); String authorizationID = request.getLockId(); TransactionResponse result = request.createResponse(); result.setHandle(request.getHandle()); if (request.getVersion().startsWith("2") && e.getCause() instanceof FeatureLockException && request.getLockId() == null) { exception = new WFSTransactionException(e.getMessage(), e, "MissingParameterValue"); String lockId = request.getLockId(); if (lockId != null) { if (request.isReleaseActionAll()) { lockRelease(lockId); } else if (request.isReleaseActionSome()) { lockRefresh(lockId); transaction.close(); transaction = null; request.setTransaction(null); if (request.getVersion() != null && request.getVersion().startsWith("2")) { if (!(exception instanceof WFSException && ((WFSException) exception).getCode() != null)) {
TransactionRequest.adapt( OwsUtils.parameter(operation.getParameters(), EObject.class)); if (t != null) { for (TransactionElement el : t.getElements()) { if (el instanceof Insert) { Insert in = (Insert) el;
WFSReprojectionUtil.getDeclaredCrs(store.getSchema(), request.getVersion()); if (filter != null) { filter = if ((request.getLockId() != null) && store instanceof FeatureLocking && (request.isReleaseActionSome())) { SimpleFeatureLocking locking; locking = (SimpleFeatureLocking) store;
public static TransactionRequest replaceWithFixedRoadsInsert( Catalog catalog, TransactionRequest request) { List<TransactionElement> transactionElements = new ArrayList<>(); // create an insert Insert insert = request.createInsert(); List<SimpleFeature> features = new ArrayList<>(); try { SimpleFeatureType schema = (SimpleFeatureType) catalog.getFeatureTypeByName(MockData.ROAD_SEGMENTS.getLocalPart()) .getFeatureType(); Geometry geometry = new WKTReader().read("MULTILINESTRING((0 0, 1 1))"); SimpleFeature feature = SimpleFeatureBuilder.build( schema, new Object[] {geometry, "107", "New Road"}, null); features.add(feature); } catch (Exception e) { throw new RuntimeException(e); } insert.setFeatures(features); transactionElements.add(insert); request.setElements(transactionElements); return request; }
/** * Looks up the element handlers to be used for each element * * @param group */ private Map gatherElementHandlers(TransactionRequest request) throws WFSTransactionException { // JD: use a linked hashmap since the order of elements in a transaction // must be respected Map map = new LinkedHashMap(); List<TransactionElement> elements = request.getElements(); for (TransactionElement element : elements) { map.put(element, findElementHandler(element.getClass())); } return map; }
private void dataStoreChangeInternal(final TransactionEvent event) { final Object source = event.getSource(); if (!(source instanceof InsertElementType || source instanceof UpdateElementType || source instanceof DeleteElementType)) { return; } final EObject originatingTransactionRequest = (EObject) source; checkNotNull(originatingTransactionRequest, "No original transaction request exists"); final TransactionEventType type = event.getType(); if (TransactionEventType.POST_INSERT.equals(type)) { // no need to compute the bounds, they're the same than for PRE_INSERT return; } final QName featureTypeName = event.getLayerName(); final Set<String> affectedTileLayers = gwc.getTileLayersByFeatureType( featureTypeName.getNamespaceURI(), featureTypeName.getLocalPart()); if (affectedTileLayers.isEmpty()) { // event didn't touch a cached layer return; } final SimpleFeatureCollection affectedFeatures = event.getAffectedFeatures(); final ReferencedEnvelope affectedBounds = affectedFeatures.getBounds(); final TransactionType transaction = event.getRequest(); TransactionRequest request = TransactionRequest.adapt(transaction); for (String tileLayerName : affectedTileLayers) { addLayerDirtyRegion(request, tileLayerName, affectedBounds); } }
public static TransactionRequest replaceWithFixedRoadsUpdate( Catalog catalog, TransactionRequest request) { List<TransactionElement> transactionElements = new ArrayList<>(); // create an update Update update = request.createUpdate(); try { update.setTypeName( new QName( MockData.ROAD_SEGMENTS.getNamespaceURI(), MockData.ROAD_SEGMENTS.getLocalPart())); update.setFilter(CQL.toFilter("FID = 106")); Property property = update.createProperty(); property.setName(new QName(null, "NAME")); property.setValue("Clean Road"); update.setUpdateProperties(Arrays.asList(property)); } catch (Exception e) { throw new RuntimeException(e); } transactionElements.add(update); request.setElements(transactionElements); return request; }
@SuppressWarnings("unchecked") private Map<String, List<ReferencedEnvelope>> getByLayerDirtyRegions( final TransactionRequest transaction) { final Map<Object, Object> extendedProperties = transaction.getExtendedProperties(); Map<String, List<ReferencedEnvelope>> byLayerDirtyRegions; byLayerDirtyRegions = (Map<String, List<ReferencedEnvelope>>) extendedProperties.get(GWC_TRANSACTION_INFO_PLACEHOLDER); if (byLayerDirtyRegions == null) { byLayerDirtyRegions = new HashMap<String, List<ReferencedEnvelope>>(); extendedProperties.put(GWC_TRANSACTION_INFO_PLACEHOLDER, byLayerDirtyRegions); } return byLayerDirtyRegions; }
String version = request.getVersion(); String code; if (version == null
/** * Takes an update and transforms it in an insert if the feature type is versioned, leave it as * is otherwise */ private TransactionElement transformUpdate( TransactionRequest request, Update update, Date referenceTime) throws IOException { FeatureTypeInfo featureTypeInfo = getFeatureTypeInfo(new NameImpl(update.getTypeName())); if (!TimeVersioning.isEnabled(featureTypeInfo)) { return update; } SimpleFeatureCollection features = getTransactionFeatures(update); List<SimpleFeature> recent = getMostRecentFeatures(features, featureTypeInfo); List<SimpleFeature> newFeatures = recent.stream() .map(f -> prepareInsertFeature(f, update, referenceTime)) .collect(Collectors.toList()); Insert insert = request.createInsert(); insert.setHandle(update.getHandle()); insert.getFeatures().addAll(newFeatures); return insert; }
WFSReprojectionUtil.getDeclaredCrs(store.getSchema(), request.getVersion()); filter = WFSReprojectionUtil.normalizeFilterCRS(filter, store.getSchema(), declaredCRS); if ((request.getLockId() != null) && store instanceof FeatureLocking && (request.isReleaseActionSome())) { SimpleFeatureLocking locking; locking = (SimpleFeatureLocking) store;
public static TransactionRequest defaultTransformation( Catalog catalog, TransactionRequest request) { for (TransactionElement element : request.getElements()) { if (element instanceof Insert) { for (Object f : ((Insert) element).getFeatures()) { SimpleFeature sf = (SimpleFeature) f; if ("Points".equals(sf.getType().getTypeName())) { // check inserts can be modified sf.setAttribute("id", sf.getAttribute("id") + "-modified"); } } } else if (element instanceof Update) { Update update = (Update) element; List<Property> updateProperties = update.getUpdateProperties(); Property property = update.createProperty(); property.setName(new QName(null, "NAME")); property.setValue(FOLSOM_STREET); updateProperties.add(property); update.setUpdateProperties(updateProperties); } else if (element instanceof Delete) { try { // mass delete more than requested ((Delete) element).setFilter(CQL.toFilter("FID > 102")); } catch (CQLException e) { throw new WFSException(e); } } } return request; }
new TransactionEvent( TransactionEventType.PRE_INSERT, TransactionRequest.adapt(t), PRIMITIVEGEOFEATURE, inserted); new TransactionEvent( TransactionEventType.PRE_UPDATE, TransactionRequest.adapt(t), PRIMITIVEGEOFEATURE, updated); new TransactionEvent( TransactionEventType.PRE_DELETE, TransactionRequest.adapt(t), PRIMITIVEGEOFEATURE, deleted);