import hu.user.lis.db.ProjectAssociate;
import java.util.Collection;
+import java.util.Map;
public interface ProjectAssociateService {
ProjectAssociate createNew(String projectId, String associateId);
void remove(ProjectAssociate entity);
+ void update(String projectId, Map<String, Boolean> associates);
+
String toString(ProjectAssociate sourceEntity);
Collection<ProjectAssociate> getAll();
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
@Service
@Log4j2
entities.remove(entity);
}
+ @Override
+ public void update(String projectId, Map<String, Boolean> associates) {
+ List<ProjectAssociate> deleteEntities = entities.stream().filter(pa -> pa.getProjectId().equals(projectId)).collect(Collectors.toList());
+ entities.removeAll(deleteEntities);
+ associates.forEach((associateId, isAssociate) -> {
+ if (isAssociate) {
+ ProjectAssociate projectAssociate = ProjectAssociate.builder().projectId(projectId).associateId(associateId).build();
+ entities.add(projectAssociate);
+ }
+ });
+ }
+
private List<ProjectAssociate> generate() {
List<ProjectAssociate> result = new ArrayList<>();
List<Project> projects = projectService.getAll();
ProjectAssociateService projectAssociateServiceImpl;
private Project formDocument;
private Project origDocument;
+ private Map<String, Boolean> origAssociates;
+ private Map<String, Boolean> formAssociates;
@WireVariable
private PartnerSelectorDataModel partnerSelectorDataModel;
@WireVariable
private String partialAssociateName;
- private Map<String, Boolean> origAssociates;
- private Map<String, Boolean> formAssociates;
public ProjectEditorModel() {
} else {
args = ImmutableMap.of("origDocument", origDocument, "formDocument", formDocument);
}
+ projectAssociateServiceImpl.update(formDocument.getId(), formAssociates);
}
+
eventBus.showProjectsList(args);
}
}
@Command
- @NotifyChange("associates")
+ @NotifyChange("formAssociates")
public void onAfterRenderAssociates() {
formAssociates = new HashMap<>();
- for (int i = 1; i < associatesDataModel.getSize() + 1; i++) {
+ origAssociates = new HashMap<>();
+ for (int i = 0; i < associatesDataModel.getSize(); i++) {
Associate associate = associatesDataModel.getElementAt(i);
boolean exists = projectAssociateServiceImpl.getAll().stream()
.anyMatch(
log.info("{} is on project {}", associate.getName(), formDocument.getName());
}
formAssociates.put(associate.getId(), exists);
+ origAssociates.put(associate.getId(), exists);
}
}