@Override public String getName() { return validationStamp.getName(); } }
@Override public String getItemId(ValidationStamp item) { return item.getName(); }
private boolean matches(ValidationStamp vs, String pattern) { return StringUtils.isNotBlank(pattern) && Pattern.matches(pattern, vs.getName()); } }
/** * Checks if the validation run view has the given validation stamp with the given status. */ public boolean hasValidationStamp(String name, String status) { return (StringUtils.equals(name, getValidationStamp().getName())) && isRun() && ( StringUtils.isBlank(status) || StringUtils.equals(status, getLastStatus().getStatusID().getId()) ); }
@NotNull @Override @JsonIgnore public Map<String, String> getRunMetricTags() { return ImmutableMap.of( "project", validationStamp.getBranch().getProject().getName(), "branch", validationStamp.getBranch().getName(), "validationStamp", validationStamp.getName(), "status", getLastStatusId() ); }
@Override public AutoPromotionProperty copy(ProjectEntity sourceEntity, AutoPromotionProperty value, ProjectEntity targetEntity, Function<String, String> replacementFn) { PromotionLevel targetPromotionLevel = (PromotionLevel) targetEntity; return new AutoPromotionProperty( value.getValidationStamps().stream() .map(vs -> structureService.findValidationStampByName( targetPromotionLevel.getBranch().getProject().getName(), targetPromotionLevel.getBranch().getName(), vs.getName() )) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList()), value.getInclude(), value.getExclude() ); }
@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 String getEntityDisplayName() { return String.format("Validation run %s#%d for %s/%s/%s", validationStamp.getName(), runOrder, build.getBranch().getProject().getName(), build.getBranch().getName(), build.getName() ); }
@Override public Event deleteValidationStamp(ValidationStamp validationStamp) { return Event.of(DELETE_VALIDATION_STAMP) .withBranch(validationStamp.getBranch()) .with("validation_stamp", validationStamp.getName()) .with("validation_stamp_id", validationStamp.getId().toString()) .get(); }
@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()); } }
public ValidationRun doValidateBuild( Build build, ValidationStamp vs, ValidationRunStatusID statusId, ValidationRunData<?> runData ) throws Exception { return asUser().withView(build).with(build, ValidationRunCreate.class).call(() -> structureService.newValidationRun( build, new ValidationRunRequest( vs.getName(), statusId, runData != null ? runData.getDescriptor().getId() : null, runData != null ? runData.getData() : null, null ) ) ); }
@Override public String render(ProjectEntity projectEntity, Event event) { switch (projectEntity.getProjectEntityType()) { case PROJECT: return ((Project) projectEntity).getName(); case BRANCH: return ((Branch) projectEntity).getName(); case PROMOTION_LEVEL: return ((PromotionLevel) projectEntity).getName(); case VALIDATION_STAMP: return ((ValidationStamp) projectEntity).getName(); case BUILD: return ((Build) projectEntity).getName(); case VALIDATION_RUN: return "#" + ((ValidationRun) projectEntity).getRunOrder(); case PROMOTION_RUN: PromotionRun promotionRun = (PromotionRun) projectEntity; return String.format( "%s->%s", promotionRun.getBuild().getName(), promotionRun.getPromotionLevel().getName() ); default: throw new EventCannotRenderEntityException(event.getEventType().getTemplate(), projectEntity); } }
@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 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) ); }