@Override public void createTargetItem(ValidationStamp sourceValidationStamp) { ValidationStamp targetValidationStamp = structureService.newValidationStamp( ValidationStamp.of( targetBranch, NameDescription.nd( sourceValidationStamp.getName(), replacementFn.apply(sourceValidationStamp.getDescription()) ) ) ); copyValidationStampContent(sourceValidationStamp, targetValidationStamp); }
@Override public void saveValidationStamp(ValidationStamp validationStamp) { // Update try { getNamedParameterJdbcTemplate().update( "UPDATE VALIDATION_STAMPS SET NAME = :name, DESCRIPTION = :description, DATA_TYPE_ID = :dataTypeId, DATA_TYPE_CONFIG = CAST(:dataTypeConfig AS JSONB) WHERE ID = :id", params("name", validationStamp.getName()) .addValue("description", validationStamp.getDescription()) .addValue("id", validationStamp.id()) .addValue("dataTypeId", validationStamp.getDataType() != null ? validationStamp.getDataType().getDescriptor().getId() : null) .addValue("dataTypeConfig", validationStamp.getDataType() != null ? writeJson(validationStamp.getDataType().getConfig()) : null) ); } catch (DuplicateKeyException ex) { throw new ValidationStampNameAlreadyDefinedException(validationStamp.getName()); } }
@Override public void replaceTargetItem(ValidationStamp sourceValidationStamp, ValidationStamp targetValidationStamp) { structureService.saveValidationStamp( targetValidationStamp.withDescription( replacementFn.apply(sourceValidationStamp.getDescription()) ) ); copyValidationStampContent(sourceValidationStamp, targetValidationStamp); }
protected ValidationStamp toValidationStamp( ResultSet rs, Function<ID, Branch> branchSupplier ) throws SQLException { return ValidationStamp.of( branchSupplier.apply(id(rs, "branchId")), new NameDescription( rs.getString("name"), rs.getString("description") ) ).withId(id(rs)) .withSignature(readSignature(rs)) .withDataType(validationDataTypeConfigRepository.readValidationDataTypeConfig(rs)) .withImage(StringUtils.isNotBlank(rs.getString("imagetype"))); }
@Override public ValidationStamp newValidationStamp(ValidationStamp validationStamp) { // Creation try { // Order nb = max + 1 Integer orderNbValue = getFirstItem( "SELECT MAX(ORDERNB) FROM VALIDATION_STAMPS WHERE BRANCHID = :branchId", params("branchId", validationStamp.getBranch().id()), Integer.class ); int orderNb = orderNbValue != null ? orderNbValue + 1 : 0; // Insertion int id = dbCreate( "INSERT INTO VALIDATION_STAMPS(BRANCHID, NAME, DESCRIPTION, ORDERNB, CREATION, CREATOR, DATA_TYPE_ID, DATA_TYPE_CONFIG) VALUES (:branchId, :name, :description, :orderNb, :creation, :creator, :dataTypeId, CAST(:dataTypeConfig AS JSONB))", params("name", validationStamp.getName()) .addValue("description", validationStamp.getDescription()) .addValue("branchId", validationStamp.getBranch().id()) .addValue("orderNb", orderNb) .addValue("creation", dateTimeForDB(validationStamp.getSignature().getTime())) .addValue("creator", validationStamp.getSignature().getUser().getName()) .addValue("dataTypeId", validationStamp.getDataType() != null ? validationStamp.getDataType().getDescriptor().getId() : null) .addValue("dataTypeConfig", validationStamp.getDataType() != null ? writeJson(validationStamp.getDataType().getConfig()) : null) ); return validationStamp.withId(id(id)); } catch (DuplicateKeyException ex) { throw new ValidationStampNameAlreadyDefinedException(validationStamp.getName()); } }
@Override public String getName() { return validationStamp.getName(); } }
@Override public void bulkUpdateValidationStamps(ID validationStampId) { // Description & name ValidationStamp validationStamp = getValidationStamp(validationStampId); String description = validationStamp.getDescription(); String name = validationStamp.getName(); // Image Document image = getValidationStampImage(validationStampId); // Bulk update getNamedParameterJdbcTemplate().update( "UPDATE VALIDATION_STAMPS SET IMAGETYPE = :type, IMAGEBYTES = :content, DESCRIPTION = :description, " + "DATA_TYPE_ID = :dataTypeId, DATA_TYPE_CONFIG = CAST(:dataTypeConfig AS JSONB) " + "WHERE ID <> :id AND NAME = :name", params("id", validationStampId.getValue()) .addValue("name", name) .addValue("description", description) .addValue("type", Document.isValid(image) ? image.getType() : null) .addValue("content", Document.isValid(image) ? image.getContent() : null) .addValue("dataTypeId", validationStamp.getDataType() != null ? validationStamp.getDataType().getDescriptor().getId() : null) .addValue("dataTypeConfig", validationStamp.getDataType() != null ? writeJson(validationStamp.getDataType().getConfig()) : null) ); }
@Override public String getId() { return Objects.toString(validationStamp.id()); }
public ValidationStamp doCreateValidationStamp(Branch branch, NameDescription nameDescription, ValidationDataTypeConfig<?> config) throws Exception { return asUser().with(branch.getProject().id(), ValidationStampCreate.class).call(() -> structureService.newValidationStamp( ValidationStamp.of( branch, nameDescription ).withDataType(config) ) ); }
@Override public Optional<ValidationStamp> getOrCreateValidationStamp(AutoValidationStampProperty value, Branch branch, String validationStampName) { if (value.isAutoCreate()) { Optional<PredefinedValidationStamp> oPredefinedValidationStamp = predefinedValidationStampService.findPredefinedValidationStampByName(validationStampName); if (oPredefinedValidationStamp.isPresent()) { // Creates the validation stamp return Optional.of( securityService.asAdmin(() -> structureService.newValidationStampFromPredefined( branch, oPredefinedValidationStamp.get() ) ) ); } else if (value.isAutoCreateIfNotPredefined()) { // Creates a validation stamp even without a predefined one return Optional.of( securityService.asAdmin(() -> structureService.newValidationStamp( ValidationStamp.of( branch, NameDescription.nd(validationStampName, "Validation automatically created on demand.") ) ) ) ); } } return Optional.empty(); }
@Override public Project getProject() { return getBranch().getProject(); }
@Override public void deleteTargetItem(ValidationStamp target) { structureService.deleteValidationStamp(target.getId()); }
@Override public String getItemId(ValidationStamp item) { return item.getName(); }
public EventBuilder withValidationStamp(ValidationStamp validationStamp) { return withBranch(validationStamp.getBranch()).with(validationStamp); }
private void copyValidationStampContent(ValidationStamp sourceValidationStamp, ValidationStamp targetValidationStamp) { // Copy of the image Document image = structureService.getValidationStampImage(sourceValidationStamp.getId()); if (Document.isValid(image)) { structureService.setValidationStampImage(targetValidationStamp.getId(), image); } // Copy of properties doCopyProperties(sourceValidationStamp, targetValidationStamp, replacementFn, syncPolicy); } }
private boolean matches(ValidationStamp vs, String pattern) { return StringUtils.isNotBlank(pattern) && Pattern.matches(pattern, vs.getName()); } }
private void cleanPromotionLevel(PromotionLevel promotionLevel, int validationStampId) { Optional<AutoPromotionProperty> oProperty = propertyService.getProperty(promotionLevel, AutoPromotionPropertyType.class).option(); if (oProperty.isPresent()) { AutoPromotionProperty property = oProperty.get(); List<ValidationStamp> keptValidationStamps = property.getValidationStamps().stream().filter( validationStamp -> (validationStampId != validationStamp.id()) ).collect(Collectors.toList()); if (keptValidationStamps.size() < property.getValidationStamps().size()) { property = new AutoPromotionProperty( keptValidationStamps, property.getInclude(), property.getExclude() ); propertyService.editProperty( promotionLevel, AutoPromotionPropertyType.class, property ); } } }