@Override public URI getEntityURI(ProjectEntity entity) { return URI.create( format( "urn:test:entity:%s:%d", entity.getProjectEntityType().name(), entity.id() ) ); }
@Override public Optional<Action> getAction(ProjectEntity entity) { if (entity instanceof Branch && propertyService.hasProperty(entity, SVNBranchConfigurationPropertyType.class) && securityService.isProjectFunctionGranted(entity, BuildCreate.class)) { return Optional.of(Action.of( "svn-sync", "SVN <-> Build sync", String.format("sync/%d", entity.id()) )); } else { return Optional.empty(); } }
@Override public URI getEntityPage(ProjectEntity entity) { return page("entity:%s:%d", entity.getProjectEntityType().name(), entity.id()); }
@Override public Optional<EntityDataStoreRecord> getById(ProjectEntity entity, int id) { return getOptional( String.format( "SELECT * FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND ID = :id", entity.getProjectEntityType().name() ), params("id", id).addValue("entityId", entity.id()), (rs, rowNum) -> toEntityDataStoreRecord(entity, rs) ); }
@Override public int getCountByCategory(ProjectEntity entity, String category) { return getNamedParameterJdbcTemplate().queryForObject( String.format( "SELECT COUNT(*) FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category ", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category), Integer.class ); }
@Override public int getCountByCategoryAndName(ProjectEntity entity, String category, String name) { return getNamedParameterJdbcTemplate().queryForObject( String.format( "SELECT COUNT(*) FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "AND NAME = :name ", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("name", name), Integer.class ); }
@Override public void deleteByName(ProjectEntity entity, String category, String name) { getNamedParameterJdbcTemplate().update( String.format( "DELETE FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "AND NAME = :name", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("name", name) ); }
@Override public void deleteByGroup(ProjectEntity entity, String category, String groupName) { getNamedParameterJdbcTemplate().update( String.format( "DELETE FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "AND GROUPID = :groupId", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("groupId", groupName) ); }
@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 buildCriteria(EntityDataStoreFilter filter, StringBuilder criteria, MapSqlParameterSource params) { // Entity if (filter.getEntity() != null) { criteria.append(String.format(" AND %s = :entityId", filter.getEntity().getProjectEntityType().name())); params.addValue("entityId", filter.getEntity().id()); } // Category if (StringUtils.isNotBlank(filter.getCategory())) { criteria.append(" AND CATEGORY = :category"); params.addValue("category", filter.getCategory()); } // Name if (StringUtils.isNotBlank(filter.getName())) { criteria.append(" AND NAME = :name"); params.addValue("name", filter.getName()); } // Group if (StringUtils.isNotBlank(filter.getGroup())) { criteria.append(" AND GROUPID = :group"); params.addValue("group", filter.getGroup()); } // Before time if (filter.getBeforeTime() != null) { criteria.append(" AND CREATION <= :beforeTime"); params.addValue("beforeTime", dateTimeForDB(filter.getBeforeTime())); } }
@Override public Optional<EntityDataStoreRecord> findLastByCategoryAndGroupAndName(ProjectEntity entity, String category, String groupName, String name) { return getLastByName( getNamedParameterJdbcTemplate().query( String.format( "SELECT * FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "AND GROUPID = :groupId " + "AND NAME = :name", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("groupId", groupName) .addValue("name", name), (rs, rowNum) -> toEntityDataStoreRecord(entity, rs) ) ).stream().findFirst(); }
@Override public List<EntityDataStoreRecord> findLastRecordsByNameInCategory(ProjectEntity entity, String category) { return getLastByName( getNamedParameterJdbcTemplate().query( String.format( "SELECT * FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "ORDER BY CREATION DESC, ID DESC", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category), (rs, rowNum) -> toEntityDataStoreRecord(entity, rs) ) ); }
@Override public List<EntityDataStoreRecord> getByCategory(ProjectEntity entity, String category, int offset, int page) { return getNamedParameterJdbcTemplate().query( String.format( "SELECT * FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "ORDER BY CREATION DESC, ID DESC " + "LIMIT :page OFFSET :offset", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("offset", offset) .addValue("page", page), (rs, rowNum) -> toEntityDataStoreRecord(entity, rs) ); }
@Override public List<EntityDataStoreRecord> getByCategoryAndName(ProjectEntity entity, String category, String name, int offset, int page) { return getNamedParameterJdbcTemplate().query( String.format( "SELECT * FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId " + "AND CATEGORY = :category " + "AND NAME = :name " + "ORDER BY CREATION DESC, ID DESC " + "LIMIT :page OFFSET :offset", entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("name", name) .addValue("offset", offset) .addValue("page", page), (rs, rowNum) -> toEntityDataStoreRecord(entity, rs) ); }
@Override public Optional<EntityDataStoreRecord> findLastByCategoryAndName(ProjectEntity entity, String category, String name, LocalDateTime beforeTime) { // SQL & parameters String sql = String.format( "SELECT * FROM ENTITY_DATA_STORE " + "WHERE %s = :entityId AND CATEGORY = :category AND NAME = :name ", entity.getProjectEntityType().name() ); MapSqlParameterSource params = params("entityId", entity.id()) .addValue("category", category) .addValue("name", name); // Time criteria if (beforeTime != null) { sql += "AND CREATION <= :beforeTime "; params = params.addValue("beforeTime", dateTimeForDB(beforeTime)); } // Ordering sql += "ORDER BY CREATION DESC, ID DESC LIMIT 1"; // Performs the query return getOptional( sql, params, (rs, rowNum) -> toEntityDataStoreRecord(entity, rs) ); }
@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 ); }
entity.getProjectEntityType().name() ), params("entityId", entity.id()) .addValue("category", category) .addValue("name", name),