annotate src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentSubjectBean.java @ 133:5ccd6e709f95

fix attribute name in EditIntent.
author casties
date Thu, 23 Feb 2017 19:25:37 +0100
parents eee2e0ca4032
children 25bfcc9d757c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package de.mpiwg.itgroup.ismi.entry.beans;
jurzua
parents:
diff changeset
2
jurzua
parents:
diff changeset
3 import java.util.ArrayList;
jurzua
parents:
diff changeset
4 import java.util.List;
jurzua
parents:
diff changeset
5
jurzua
parents:
diff changeset
6 import javax.faces.model.SelectItem;
jurzua
parents:
diff changeset
7
jurzua
parents:
diff changeset
8 import org.apache.log4j.Logger;
jurzua
parents:
diff changeset
9 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
10 import org.mpi.openmind.repository.bo.Node;
jurzua
parents:
diff changeset
11 import org.mpi.openmind.repository.bo.Relation;
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
12 import org.mpi.openmind.repository.services.utils.EditIntent;
1
jurzua
parents:
diff changeset
13 import org.mpi.openmind.security.bo.User;
jurzua
parents:
diff changeset
14
jurzua
parents:
diff changeset
15
jurzua
parents:
diff changeset
16 public class CurrentSubjectBean extends AbstractISMIBean {
jurzua
parents:
diff changeset
17
jurzua
parents:
diff changeset
18 private static final long serialVersionUID = -435164522506185752L;
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 private static Logger logger = Logger.getLogger(CurrentSubjectBean.class);
jurzua
parents:
diff changeset
21
jurzua
parents:
diff changeset
22 public static String type = "type";
jurzua
parents:
diff changeset
23 public static String NO_SUBJECT = "NO_SUBJECT";
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25 public static String has_subject = "has_subject";
jurzua
parents:
diff changeset
26 public static String SUBJECT = "SUBJECT";
jurzua
parents:
diff changeset
27 public static String main_subject = "main_subject";
jurzua
parents:
diff changeset
28 public static String sub_subject = "sub_subject";
jurzua
parents:
diff changeset
29
jurzua
parents:
diff changeset
30 private Long idMainSubject;
jurzua
parents:
diff changeset
31
jurzua
parents:
diff changeset
32 private List<SelectItem> suggestedCategories = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
33 private List<SelectItem> suggestedTypes = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
34
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
35 /** intent to edit all attributes and relations in the form */
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
36 public static EditIntent editSubjectIntent = new EditIntent(
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
37 AbstractISMIBean.SUBJECT,
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
38 // attributes
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
39 new String[]{"name", "type"},
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
40 // source relations
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
41 new String[]{"is_part_of"},
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
42 // target relations
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
43 new String[]{"is_part_of"});
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
44
1
jurzua
parents:
diff changeset
45 public CurrentSubjectBean(){
jurzua
parents:
diff changeset
46 suggestedTypes.add(new SelectItem(null, "-- choose --"));
jurzua
parents:
diff changeset
47 suggestedTypes.add(new SelectItem(main_subject, main_subject));
jurzua
parents:
diff changeset
48 suggestedTypes.add(new SelectItem(sub_subject, sub_subject));
jurzua
parents:
diff changeset
49 reset();
jurzua
parents:
diff changeset
50 }
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 @Override
jurzua
parents:
diff changeset
53 public void reset(){
jurzua
parents:
diff changeset
54 super.reset();
jurzua
parents:
diff changeset
55 this.entity = new Entity(Node.TYPE_ABOX, SUBJECT, false);
jurzua
parents:
diff changeset
56
jurzua
parents:
diff changeset
57 setDefObjectClass(SUBJECT);
jurzua
parents:
diff changeset
58 this.idMainSubject = null;
jurzua
parents:
diff changeset
59
jurzua
parents:
diff changeset
60 this.suggestedCategories = new ArrayList<SelectItem>();
jurzua
parents:
diff changeset
61 this.suggestedCategories.add(new SelectItem(null, "-- choose --"));
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 List<Entity> cats = getWrapper().getEntitiesByAtt(SUBJECT, type, main_subject, -1, true);
jurzua
parents:
diff changeset
64
jurzua
parents:
diff changeset
65 for(Entity cat : cats){
jurzua
parents:
diff changeset
66 SelectItem item = new SelectItem(cat.getId(), cat.getOwnValue());
jurzua
parents:
diff changeset
67
jurzua
parents:
diff changeset
68 item.setStyle("font-weight: bold; padding-left: 0px; font-size: 14;");
jurzua
parents:
diff changeset
69 this.suggestedCategories.add(item);
jurzua
parents:
diff changeset
70 List<Entity> subCats = getWrapper().getSourcesForTargetRelation(cat, is_part_of, SUBJECT, -1);
jurzua
parents:
diff changeset
71 for(Entity subCat : subCats){
jurzua
parents:
diff changeset
72
jurzua
parents:
diff changeset
73 SelectItem subItem = new SelectItem(subCat.getId(), subCat.getOwnValue());
jurzua
parents:
diff changeset
74 subItem.setStyle("padding-left: 10px; font-size: 12;");
jurzua
parents:
diff changeset
75
jurzua
parents:
diff changeset
76 this.suggestedCategories.add(subItem);
jurzua
parents:
diff changeset
77 List<Entity> subsubCats = getWrapper().getSourcesForTargetRelation(subCat, is_part_of, SUBJECT, -1);
jurzua
parents:
diff changeset
78 for(Entity subsubCat : subsubCats){
jurzua
parents:
diff changeset
79
jurzua
parents:
diff changeset
80 SelectItem subsubItem = new SelectItem(subsubCat.getId(), subsubCat.getOwnValue());
jurzua
parents:
diff changeset
81 subsubItem.setStyle("padding-left: 20px; font-size: 10;");
jurzua
parents:
diff changeset
82 this.suggestedCategories.add(subsubItem);
jurzua
parents:
diff changeset
83 }
jurzua
parents:
diff changeset
84 }
jurzua
parents:
diff changeset
85 }
jurzua
parents:
diff changeset
86 }
jurzua
parents:
diff changeset
87
jurzua
parents:
diff changeset
88 public void setEntity(Entity subject) {
jurzua
parents:
diff changeset
89 this.reset();
jurzua
parents:
diff changeset
90
jurzua
parents:
diff changeset
91 this.entity = subject;
jurzua
parents:
diff changeset
92 if(this.entity.isPersistent()){
jurzua
parents:
diff changeset
93 this.setCurrentId(this.entity.getId().toString());
jurzua
parents:
diff changeset
94 if (subject.isLightweight()) {
jurzua
parents:
diff changeset
95 this.entity = getWrapper().getEntityContent(this.entity);
jurzua
parents:
diff changeset
96 }
jurzua
parents:
diff changeset
97 this.loadAttributes(this.entity);//, getDefinition(this.entity));
jurzua
parents:
diff changeset
98
jurzua
parents:
diff changeset
99 for (Relation rel : this.entity.getSourceRelations()) {
jurzua
parents:
diff changeset
100 if(rel.getOwnValue().equals(is_part_of)){
jurzua
parents:
diff changeset
101 this.idMainSubject = rel.getTargetId();
jurzua
parents:
diff changeset
102 }
jurzua
parents:
diff changeset
103 }
jurzua
parents:
diff changeset
104 }
jurzua
parents:
diff changeset
105 }
jurzua
parents:
diff changeset
106
jurzua
parents:
diff changeset
107 @Override
jurzua
parents:
diff changeset
108 public String save() {
jurzua
parents:
diff changeset
109 super.save();
jurzua
parents:
diff changeset
110 try {
jurzua
parents:
diff changeset
111 User user = getSessionUser();
jurzua
parents:
diff changeset
112
jurzua
parents:
diff changeset
113 this.entity = updateEntityAttributes(this.entity);
jurzua
parents:
diff changeset
114
jurzua
parents:
diff changeset
115 this.entity.removeAllSourceRelations(is_part_of, SUBJECT);
jurzua
parents:
diff changeset
116 if(getIdMainSubject() != null){
jurzua
parents:
diff changeset
117 Entity mainCategory = getWrapper().getEntityById(getIdMainSubject());
jurzua
parents:
diff changeset
118 //replaceSourceRelation(this.entity, mainCategory, SUBJECT, is_part_of);
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
119 if (mainCategory.isLightweight()) {
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
120 mainCategory = getWrapper().getEntityContent(mainCategory);
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
121 }
1
jurzua
parents:
diff changeset
122 this.entity.replaceSourceRelation(mainCategory, SUBJECT, is_part_of);
jurzua
parents:
diff changeset
123 }
jurzua
parents:
diff changeset
124
125
eee2e0ca4032 updated entry beans to use EditIntents.
casties
parents: 124
diff changeset
125 this.entity = getWrapper().saveEntity(this.entity, user.getEmail(), editSubjectIntent);
1
jurzua
parents:
diff changeset
126 getSessionBean().setEditFormCurrentEntId(this.entity.getId());
jurzua
parents:
diff changeset
127
jurzua
parents:
diff changeset
128 logger.info("Entity saved - Time = " + (System.currentTimeMillis() - start) + ", " + entity);
jurzua
parents:
diff changeset
129 this.printSuccessSavingEntity();
jurzua
parents:
diff changeset
130
jurzua
parents:
diff changeset
131 getAppBean().resetSuggestedSubjects();
jurzua
parents:
diff changeset
132 } catch (Exception e) {
jurzua
parents:
diff changeset
133 logger.error(e.getMessage(), e);
jurzua
parents:
diff changeset
134 this.printInternalError(e);
jurzua
parents:
diff changeset
135 }
jurzua
parents:
diff changeset
136
jurzua
parents:
diff changeset
137 saveEnd();
jurzua
parents:
diff changeset
138 return PAGE_EDITOR;
jurzua
parents:
diff changeset
139
jurzua
parents:
diff changeset
140 }
jurzua
parents:
diff changeset
141
jurzua
parents:
diff changeset
142 public List<SelectItem> getSuggestedCategories() {
jurzua
parents:
diff changeset
143 return suggestedCategories;
jurzua
parents:
diff changeset
144 }
jurzua
parents:
diff changeset
145
jurzua
parents:
diff changeset
146 public void setSuggestedCategories(List<SelectItem> suggestedCategories) {
jurzua
parents:
diff changeset
147 this.suggestedCategories = suggestedCategories;
jurzua
parents:
diff changeset
148 }
jurzua
parents:
diff changeset
149
jurzua
parents:
diff changeset
150 public Long getIdMainSubject() {
jurzua
parents:
diff changeset
151 return idMainSubject;
jurzua
parents:
diff changeset
152 }
jurzua
parents:
diff changeset
153
jurzua
parents:
diff changeset
154 public void setIdMainSubject(Long idMainSubject) {
jurzua
parents:
diff changeset
155 this.idMainSubject = idMainSubject;
jurzua
parents:
diff changeset
156 }
jurzua
parents:
diff changeset
157
jurzua
parents:
diff changeset
158 public List<SelectItem> getSuggestedTypes() {
jurzua
parents:
diff changeset
159 return suggestedTypes;
jurzua
parents:
diff changeset
160 }
jurzua
parents:
diff changeset
161
jurzua
parents:
diff changeset
162 public void setSuggestedTypes(List<SelectItem> suggestedTypes) {
jurzua
parents:
diff changeset
163 this.suggestedTypes = suggestedTypes;
jurzua
parents:
diff changeset
164 }
jurzua
parents:
diff changeset
165 }