wip: group and center API changes
This commit is contained in:
+8
-1
@@ -109,7 +109,8 @@ public class CentersApiResource {
|
||||
public String retrieveOne(@Context final UriInfo uriInfo, @PathParam("centerId") final Long centerId) {
|
||||
|
||||
this.context.authenticatedUser().validateHasReadPermission(GroupingTypesApiConstants.CENTER_RESOURCE_NAME);
|
||||
|
||||
final Set<String> associationParameters = ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
|
||||
CenterData center = this.centerReadPlatformService.retrieveOne(centerId);
|
||||
|
||||
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||
@@ -117,6 +118,12 @@ public class CentersApiResource {
|
||||
final CenterData templateCenter = this.centerReadPlatformService.retrieveTemplate(center.officeId());
|
||||
center = CenterData.withTemplate(templateCenter, center);
|
||||
}
|
||||
|
||||
if (!associationParameters.isEmpty()) {
|
||||
if (associationParameters.contains("groups")) {
|
||||
center = CenterData.setGroups(center, this.centerReadPlatformService.retriveAssociatedGroups(centerId));
|
||||
}
|
||||
}
|
||||
|
||||
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||
return this.centerApiJsonSerializer.serialize(settings, center, GroupingTypesApiConstants.CENTER_RESPONSE_DATA_PARAMETERS);
|
||||
|
||||
+9
-5
@@ -34,12 +34,12 @@ public class CenterData {
|
||||
|
||||
public static CenterData template(final Long officeId, final Collection<OfficeData> officeOptions,
|
||||
final Collection<StaffData> staffOptions) {
|
||||
return new CenterData(null, null, null, officeId, null, null, null, null, officeOptions, staffOptions);
|
||||
return new CenterData(null, null, null, officeId, null, null, null, null, officeOptions, staffOptions, null);
|
||||
}
|
||||
|
||||
public static CenterData withTemplate(final CenterData templateCenter, final CenterData center) {
|
||||
return new CenterData(center.id, center.name, center.externalId, center.officeId, center.officeName, center.staffId,
|
||||
center.staffName, center.hierarchy, templateCenter.officeOptions, templateCenter.staffOptions);
|
||||
center.staffName, center.hierarchy, templateCenter.officeOptions, templateCenter.staffOptions, null);
|
||||
}
|
||||
|
||||
public static CenterData instance(final Long id, final String name, final String externalId, final Long officeId,
|
||||
@@ -48,12 +48,16 @@ public class CenterData {
|
||||
final Collection<OfficeData> officeOptions = null;
|
||||
final Collection<StaffData> staffOptions = null;
|
||||
|
||||
return new CenterData(id, name, externalId, officeId, officeName, staffId, staffName, hierarchy, officeOptions, staffOptions);
|
||||
return new CenterData(id, name, externalId, officeId, officeName, staffId, staffName, hierarchy, officeOptions, staffOptions, null);
|
||||
}
|
||||
|
||||
public static CenterData setGroups(final CenterData centerData, final Collection<GroupGeneralData> groups){
|
||||
return new CenterData(centerData.id, centerData.name, centerData.externalId, centerData.officeId, centerData.officeName, centerData.staffId, centerData.staffName, centerData.hierarchy, centerData.officeOptions, centerData.staffOptions, groups);
|
||||
}
|
||||
|
||||
private CenterData(final Long id, final String name, final String externalId, final Long officeId, final String officeName,
|
||||
final Long staffId, final String staffName, final String hierarchy, final Collection<OfficeData> officeOptions,
|
||||
final Collection<StaffData> staffOptions) {
|
||||
final Collection<StaffData> staffOptions, final Collection<GroupGeneralData> groups) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.externalId = externalId;
|
||||
@@ -65,7 +69,7 @@ public class CenterData {
|
||||
|
||||
this.officeOptions = officeOptions;
|
||||
this.staffOptions = staffOptions;
|
||||
this.groups = null;
|
||||
this.groups = groups;
|
||||
}
|
||||
|
||||
public Long officeId() {
|
||||
|
||||
+2
@@ -21,4 +21,6 @@ public interface CenterReadPlatformService {
|
||||
Collection<CenterData> retrieveAll(SearchParameters searchCriteria);
|
||||
|
||||
GroupGeneralData retrieveCenterGroupTemplate(Long centerId);
|
||||
|
||||
Collection<GroupGeneralData> retriveAssociatedGroups(Long centerId);
|
||||
}
|
||||
|
||||
+47
-12
@@ -42,6 +42,7 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService
|
||||
private final OfficeReadPlatformService officeReadPlatformService;
|
||||
private final StaffReadPlatformService staffReadPlatformService;
|
||||
private final CenterDataMapper centerMapper = new CenterDataMapper();
|
||||
private final GroupDataMapper groupDataMapper = new GroupDataMapper();
|
||||
|
||||
@Autowired
|
||||
public CenterReadPlatformServiceImpl(final PlatformSecurityContext context, final TenantAwareRoutingDataSource dataSource,
|
||||
@@ -94,23 +95,22 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService
|
||||
|
||||
return extraCriteria;
|
||||
}
|
||||
|
||||
|
||||
private static final String sqlQuery = "g.id as id, g.external_id as externalId, g.name as name, " +
|
||||
"g.office_id as officeId, o.name as officeName, " +
|
||||
"g.staff_id as staffId, s.display_name as staffName, " +
|
||||
"g.hierarchy as hierarchy " +
|
||||
"from m_group g " +
|
||||
"join m_office o on o.id = g.office_id " +
|
||||
"left join m_staff s on s.id = g.staff_id ";
|
||||
|
||||
private static final class CenterDataMapper implements RowMapper<CenterData> {
|
||||
|
||||
private final String schemaSql;
|
||||
|
||||
public CenterDataMapper() {
|
||||
final StringBuilder sqlBuilder = new StringBuilder(400);
|
||||
|
||||
sqlBuilder.append("g.id as id, g.external_id as externalId, g.name as name, ");
|
||||
sqlBuilder.append("g.office_id as officeId, o.name as officeName, ");
|
||||
sqlBuilder.append("g.staff_id as staffId, s.display_name as staffName, ");
|
||||
sqlBuilder.append("g.hierarchy as hierarchy ");
|
||||
sqlBuilder.append("from m_group g ");
|
||||
sqlBuilder.append("join m_office o on o.id = g.office_id ");
|
||||
sqlBuilder.append("left join m_staff s on s.id = g.staff_id ");
|
||||
|
||||
this.schemaSql = sqlBuilder.toString();
|
||||
|
||||
this.schemaSql = sqlQuery;
|
||||
}
|
||||
|
||||
public String schema() {
|
||||
@@ -133,6 +133,35 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService
|
||||
}
|
||||
}
|
||||
|
||||
private static final class GroupDataMapper implements RowMapper<GroupGeneralData> {
|
||||
|
||||
private final String schemaSql;
|
||||
|
||||
public GroupDataMapper() {
|
||||
|
||||
this.schemaSql = sqlQuery;
|
||||
}
|
||||
|
||||
public String schema() {
|
||||
return this.schemaSql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GroupGeneralData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
|
||||
|
||||
final Long id = rs.getLong("id");
|
||||
final String name = rs.getString("name");
|
||||
final String externalId = rs.getString("externalId");
|
||||
final Long officeId = rs.getLong("officeId");
|
||||
final String officeName = rs.getString("officeName");
|
||||
final Long staffId = JdbcSupport.getLong(rs, "staffId");
|
||||
final String staffName = rs.getString("staffName");
|
||||
final String hierarchy = rs.getString("hierarchy");
|
||||
|
||||
return GroupGeneralData.instance(id, name, externalId, officeId, officeName, null, null, staffId, staffName, hierarchy);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<CenterData> retrieveAll(final SearchParameters searchCriteria) {
|
||||
|
||||
@@ -231,4 +260,10 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService
|
||||
return GroupGeneralData.template(centerOfficeId, center.getId(), center.getName(), staffId, staffName, centerOptions,
|
||||
officeOptions, staffOptions, clientOptions);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<GroupGeneralData> retriveAssociatedGroups(Long centerId) {
|
||||
String sql = "select " + this.groupDataMapper.schema() + " where g.parent_id = ? ";
|
||||
return this.jdbcTemplate.query(sql, groupDataMapper, new Object[] { centerId });
|
||||
}
|
||||
}
|
||||
+8
-6
@@ -115,13 +115,14 @@ public class GroupWritePlatformServiceJpaRepositoryImpl implements GroupWritePla
|
||||
clientMembers = assembleSetOfClients(officeId, command);
|
||||
}
|
||||
|
||||
Set<Group> childGroups = null;
|
||||
//TODO -AA: Not sure about children are added at the time of group creation
|
||||
/*Set<Group> childGroups = null;
|
||||
if (groupLevel.isRecursable()) {
|
||||
childGroups = assembleSetOfChildGroups(officeId, command);
|
||||
}
|
||||
}*/
|
||||
|
||||
final Group newGroup = Group
|
||||
.newGroup(groupOffice, staff, parentGroup, groupLevel, name, externalId, clientMembers, childGroups);
|
||||
.newGroup(groupOffice, staff, parentGroup, groupLevel, name, externalId, clientMembers, null);
|
||||
|
||||
// pre-save to generate id for use in group hierarchy
|
||||
this.groupRepository.save(newGroup);
|
||||
@@ -261,7 +262,8 @@ public class GroupWritePlatformServiceJpaRepositoryImpl implements GroupWritePla
|
||||
return new CommandProcessingResultBuilder() //
|
||||
.withCommandId(command.commandId()) //
|
||||
.withOfficeId(groupForUpdate.getId()) //
|
||||
.withGroupId(groupForUpdate.getOfficeId()) //
|
||||
//apart from group context group id does not make much sense
|
||||
.withGroupId(groupForUpdate.getId())
|
||||
.withEntityId(groupForUpdate.getId()) //
|
||||
.with(actualChanges) //
|
||||
.build();
|
||||
@@ -358,7 +360,7 @@ public class GroupWritePlatformServiceJpaRepositoryImpl implements GroupWritePla
|
||||
return clientMembers;
|
||||
}
|
||||
|
||||
private Set<Group> assembleSetOfChildGroups(final Long officeId, final JsonCommand command) {
|
||||
/*private Set<Group> assembleSetOfChildGroups(final Long officeId, final JsonCommand command) {
|
||||
|
||||
final Set<Group> childGroups = new HashSet<Group>();
|
||||
final String[] childGroupsArray = command.arrayValueOfParameterNamed("childGroups");
|
||||
@@ -377,7 +379,7 @@ public class GroupWritePlatformServiceJpaRepositoryImpl implements GroupWritePla
|
||||
}
|
||||
|
||||
return childGroups;
|
||||
}
|
||||
}*/
|
||||
|
||||
private String[] getClientIds(final Set<Client> clients) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user