public Signature getSignature(Signature signature) { return Signature.of( StringUtils.isNotBlank(user) ? user : signature.getUser().getName() ).withTime( time != null ? time : signature.getTime() ); } }
public static User of(String name) { return new User(name); }
public static Signature none() { return new Signature( Time.now(), User.anonymous() ); }
public static User anonymous() { return of(ANONYMOUS); }
public static Signature of(LocalDateTime dateTime, String name) { return new Signature( dateTime, User.of(name) ); }
public static SignatureRequest of(Signature signature) { return new SignatureRequest(signature.getTime(), signature.getUser().getName()); }
@Override public void post(Event event) { StringBuilder sql = new StringBuilder("INSERT INTO EVENTS(EVENT_VALUES, EVENT_TIME, EVENT_USER, EVENT_TYPE, REF"); MapSqlParameterSource params = new MapSqlParameterSource(); params.addValue("eventValues", writeJson(event.getValues())); params.addValue("eventTime", dateTimeForDB(event.getSignature().getTime())); params.addValue("eventUser", event.getSignature().getUser().getName()); params.addValue("eventType", event.getEventType().getId()); params.addValue("ref", event.getRef() != null ? event.getRef().name() : null); for (ProjectEntityType type : event.getEntities().keySet()) { sql.append(", ").append(type.name()); } sql.append(") VALUES (:eventValues, :eventTime, :eventUser, :eventType, :ref"); for (Map.Entry<ProjectEntityType, ProjectEntity> entry : event.getEntities().entrySet()) { ProjectEntityType type = entry.getKey(); ProjectEntity entity = entry.getValue(); String typeEntry = type.name().toLowerCase(); sql.append(", :").append(typeEntry); params.addValue(typeEntry, entity.id()); } sql.append(")"); getNamedParameterJdbcTemplate().update( sql.toString(), params ); }
private void audit(EntityDataStoreRecordAuditType type, int recordId, Signature signature) { getNamedParameterJdbcTemplate().update( "INSERT INTO ENTITY_DATA_STORE_AUDIT(RECORD_ID, AUDIT_TYPE, TIMESTAMP, CREATOR) " + "VALUES (:recordId, :auditType, :timestamp, :user)", params("recordId", recordId) .addValue("auditType", type.name()) .addValue("timestamp", dateTimeForDB(signature.getTime())) .addValue("user", signature.getUser().getName()) ); } }
protected void newValidationRunStatus(int validationRunId, ValidationRunStatus validationRunStatus) { dbCreate( "INSERT INTO VALIDATION_RUN_STATUSES(VALIDATIONRUNID, VALIDATIONRUNSTATUSID, CREATION, CREATOR, DESCRIPTION) " + "VALUES (:validationRunId, :validationRunStatusId, :creation, :creator, :description)", params("validationRunId", validationRunId) .addValue("validationRunStatusId", validationRunStatus.getStatusID().getId()) .addValue("description", validationRunStatus.getDescription()) .addValue("creation", dateTimeForDB(validationRunStatus.getSignature().getTime())) .addValue("creator", validationRunStatus.getSignature().getUser().getName()) ); }
@Override public EntityDataStoreRecord add(ProjectEntity entity, String category, String name, Signature signature, String groupName, JsonNode data) { int id = dbCreate( String.format( "INSERT INTO ENTITY_DATA_STORE(%s, CATEGORY, NAME, GROUPID, JSON, CREATION, CREATOR) VALUES (:entityId, :category, :name, :groupId, :json, :creation, :creator)", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("name", name) .addValue("groupId", groupName) .addValue("json", writeJson(data)) .addValue("creation", dateTimeForDB(signature.getTime())) .addValue("creator", signature.getUser().getName()) ); // Audit audit(EntityDataStoreRecordAuditType.CREATED, id, signature); // OK return new EntityDataStoreRecord( id, entity, category, name, groupName, signature, data ); }
@Override public Build saveBuild(Build build) { // Update try { getNamedParameterJdbcTemplate().update( "UPDATE BUILDS SET NAME = :name, DESCRIPTION = :description, CREATION = :creation, CREATOR = :creator WHERE ID = :id", params("name", build.getName()) .addValue("description", build.getDescription()) .addValue("creation", dateTimeForDB(build.getSignature().getTime())) .addValue("creator", build.getSignature().getUser().getName()) .addValue("id", build.id()) ); return build; } catch (DuplicateKeyException ex) { throw new BuildNameAlreadyDefinedException(build.getName()); } }
@Override public PromotionRun newPromotionRun(PromotionRun promotionRun) { return promotionRun.withId( id( dbCreate( "INSERT INTO PROMOTION_RUNS(BUILDID, PROMOTIONLEVELID, CREATION, CREATOR, DESCRIPTION) VALUES (:buildId, :promotionLevelId, :creation, :creator, :description)", params("buildId", promotionRun.getBuild().id()) .addValue("promotionLevelId", promotionRun.getPromotionLevel().id()) .addValue("description", promotionRun.getDescription()) .addValue("creation", dateTimeForDB(promotionRun.getSignature().getTime())) .addValue("creator", promotionRun.getSignature().getUser().getName()) ) ) ); }
@Override public Project newProject(Project project) { // Creation try { int id = dbCreate( "INSERT INTO PROJECTS(NAME, DESCRIPTION, DISABLED, CREATION, CREATOR) VALUES (:name, :description, :disabled, :creation, :creator)", params("name", project.getName()) .addValue("description", project.getDescription()) .addValue("disabled", project.isDisabled()) .addValue("creation", dateTimeForDB(project.getSignature().getTime())) .addValue("creator", project.getSignature().getUser().getName()) ); // Returns with ID return project.withId(id(id)); } catch (DuplicateKeyException ex) { throw new ProjectNameAlreadyDefinedException(project.getName()); } }
@Override public Build newBuild(Build build) { // Creation try { int id = dbCreate( "INSERT INTO BUILDS(BRANCHID, NAME, DESCRIPTION, CREATION, CREATOR) VALUES (:branchId, :name, :description, :creation, :creator)", params("name", build.getName()) .addValue("description", build.getDescription()) .addValue("branchId", build.getBranch().id()) .addValue("creation", dateTimeForDB(build.getSignature().getTime())) .addValue("creator", build.getSignature().getUser().getName()) ); return build.withId(id(id)); } catch (DuplicateKeyException ex) { throw new BuildNameAlreadyDefinedException(build.getName()); } }
.addValue("json", writeJson(data)) .addValue("creation", dateTimeForDB(signature.getTime())) .addValue("creator", signature.getUser().getName()) ); audit(EntityDataStoreRecordAuditType.UPDATED, id, signature);
@Override public Branch newBranch(Branch branch) { // Creation try { int id = dbCreate( "INSERT INTO BRANCHES(PROJECTID, NAME, DESCRIPTION, DISABLED, CREATION, CREATOR) VALUES (:projectId, :name, :description, :disabled, :creation, :creator)", params("name", branch.getName()) .addValue("description", branch.getDescription()) .addValue("disabled", branch.isDisabled()) .addValue("projectId", branch.getProject().id()) .addValue("creation", dateTimeForDB(branch.getSignature().getTime())) .addValue("creator", branch.getSignature().getUser().getName()) ); // Returns with ID return branch.withId(id(id)); } catch (DuplicateKeyException ex) { throw new BranchNameAlreadyDefinedException(branch.getName()); } }
@Override public PromotionLevel newPromotionLevel(PromotionLevel promotionLevel) { // Creation try { // Order nb = max + 1 Integer orderNbValue = getFirstItem( "SELECT MAX(ORDERNB) FROM promotion_levels WHERE BRANCHID = :branchId", params("branchId", promotionLevel.getBranch().id()), Integer.class ); int orderNb = orderNbValue != null ? orderNbValue + 1 : 0; // Insertion int id = dbCreate( "INSERT INTO PROMOTION_LEVELS(BRANCHID, NAME, DESCRIPTION, ORDERNB, CREATION, CREATOR) VALUES (:branchId, :name, :description, :orderNb, :creation, :creator)", params("name", promotionLevel.getName()) .addValue("description", promotionLevel.getDescription()) .addValue("branchId", promotionLevel.getBranch().id()) .addValue("orderNb", orderNb) .addValue("creation", dateTimeForDB(promotionLevel.getSignature().getTime())) .addValue("creator", promotionLevel.getSignature().getUser().getName()) ); return promotionLevel.withId(id(id)); } catch (DuplicateKeyException ex) { throw new PromotionLevelNameAlreadyDefinedException(promotionLevel.getName()); } }
@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()); } }