1
|
1 package org.mpiwg.itgroup.geonames;
|
|
2
|
|
3 import java.util.ArrayList;
|
|
4 import java.util.List;
|
|
5
|
|
6 import javax.faces.event.ActionEvent;
|
|
7
|
|
8 import org.apache.commons.lang.StringUtils;
|
|
9 import org.json.JSONObject;
|
|
10 import org.mpi.openmind.repository.bo.Attribute;
|
|
11 import org.mpi.openmind.repository.bo.Entity;
|
|
12 import org.mpi.openmind.repository.utils.NormalizerUtils;
|
|
13 import org.mpiwg.itgroup.geonames.bo.Geoname;
|
|
14
|
|
15 import de.mpiwg.itgroup.ismi.entry.beans.AbstractBean;
|
|
16
|
|
17 public class GeonameForm extends AbstractBean{
|
|
18
|
|
19 private static String GEONAME_ID = "geoname_id";
|
|
20
|
|
21
|
|
22 private String searchPlaceTerm;
|
|
23 private List<Entity> places;
|
|
24 private Entity selectedPlace;
|
|
25
|
|
26 private String searchGeoTerm;
|
|
27 private List<Geoname> geonames;
|
|
28 private Geoname selectedGeoname;
|
|
29 private JSONObject selectedJSONGeoname;
|
|
30
|
|
31 private boolean showGeonamePopup = false;
|
|
32
|
|
33 public void listenerSelectPlace(ActionEvent event){
|
|
34 Entity place = (Entity)getRequestBean("place");
|
|
35 if(place != null){
|
|
36 this.redirect(null, "?placeId=" + place.getId());
|
|
37 loadPlace(place);
|
|
38 }
|
|
39 }
|
|
40
|
|
41 public void loadPlace(Entity place){
|
|
42 this.selectedPlace = place;
|
|
43 if(place != null){
|
|
44 this.searchGeoTerm = this.selectedPlace.getOwnValue();
|
|
45 this.searchGeonames(selectedPlace.getOwnValue());
|
|
46 }
|
|
47 }
|
|
48
|
|
49 public void listenerLoadAllPlaces(ActionEvent event){
|
|
50 this.loadPlaces(null);
|
|
51 }
|
|
52
|
|
53 public void listenerSearchPlaces(ActionEvent event){
|
|
54 this.loadPlaces(this.searchPlaceTerm);
|
|
55 }
|
|
56 /*
|
|
57 public void listenerOpenPopup(ActionEvent event){
|
|
58 this.selectedPlace = (Entity)getRequestBean("place");
|
|
59 this.searchGeonames(selectedPlace.getOwnValue());
|
|
60 this.showGeonamePopup = true;
|
|
61 }*/
|
|
62
|
|
63 public void listenerCloseSearchPopup(ActionEvent event){
|
|
64 this.closeSearchPopup();
|
|
65 }
|
|
66
|
|
67 public void listenerSearchGeonames(ActionEvent event){
|
|
68 this.searchGeonames(this.searchGeoTerm);
|
|
69 }
|
|
70
|
|
71 public String actionDisplayGeonameMap(){
|
|
72 this.selectedGeoname = (Geoname)getRequestBean("geoname");
|
|
73 if(selectedGeoname != null){
|
|
74 try {
|
|
75 this.selectedJSONGeoname = GeonameUtils.getJSONGeoname(selectedGeoname.getId());
|
|
76 } catch (Exception e) {
|
|
77 addErrorMsg(e.getMessage());
|
|
78 e.printStackTrace();
|
|
79 }
|
|
80 }
|
|
81 return "geo_map";
|
|
82 }
|
|
83
|
|
84 public void loadPlaces(String term){
|
|
85
|
|
86 String nTerm = NormalizerUtils.normalize(term);
|
|
87
|
|
88 System.out.println("Loading place in GeonameForm");
|
|
89 List<Entity> list = getAppBean().getWrapper().getEntitiesByDef("PLACE");
|
|
90 this.places = new ArrayList<Entity>();
|
|
91 for(Entity pl : list){
|
|
92 Attribute att = getAppBean().getWrapper().getAttributeByName(pl.getId(), GEONAME_ID);
|
|
93 if(att == null || StringUtils.isEmpty(att.getValue())){
|
|
94 if(StringUtils.isEmpty(nTerm)){
|
|
95 this.places.add(pl);
|
|
96 }else if(pl.getNormalizedOwnValue().contains(nTerm)){
|
|
97 this.places.add(pl);
|
|
98 }
|
|
99 }
|
|
100 }
|
|
101 }
|
|
102
|
|
103 private void searchGeonames(String term){
|
|
104
|
|
105 try {
|
|
106 this.searchGeoTerm = term;
|
|
107 this.geonames = GeonameUtils.search(searchGeoTerm);
|
|
108 } catch (Exception e) {
|
|
109 addErrorMsg(e.getMessage());
|
|
110 e.printStackTrace();
|
|
111 }
|
|
112 }
|
|
113
|
|
114 public void listenerAssignGeoname2Place(ActionEvent event){
|
|
115
|
|
116 this.selectedGeoname = (Geoname)getRequestBean("geoname");
|
|
117
|
|
118 if(this.selectedGeoname != null){
|
|
119 try {
|
|
120 if(selectedPlace.isLightweight()){
|
|
121 this.selectedPlace = getAppBean().getWrapper().getEntityContent(selectedPlace);
|
|
122 }
|
|
123
|
|
124 if(this.selectedPlace.containsAttribute(GEONAME_ID)){
|
|
125 this.selectedPlace.getAttributeByName(GEONAME_ID).setValue(this.selectedGeoname.getId().toString());
|
|
126 }else{
|
|
127 this.selectedPlace.addAttribute(new Attribute(GEONAME_ID, "geoname-id", this.selectedGeoname.getId().toString()));
|
|
128 }
|
|
129
|
|
130 getAppBean().getWrapper().saveEntity(this.selectedPlace, getSessionBean().getUsername());
|
|
131
|
|
132 addGeneralMsg("The geoname " + selectedGeoname.getId() + " has been assigned successfully to the place " +
|
|
133 selectedPlace.getOwnValue() + " [ID=" +selectedPlace.getId() + "]");
|
|
134
|
|
135 this.loadPlaces(null);
|
|
136 this.closeSearchPopup();
|
|
137 } catch (Exception e) {
|
|
138 addErrorMsg(e.getMessage());
|
|
139 e.printStackTrace();
|
|
140 }
|
|
141 }else{
|
|
142 System.err.println("AHHHHH");
|
|
143 }
|
|
144 }
|
|
145
|
|
146 private void closeSearchPopup(){
|
|
147 this.showGeonamePopup = false;
|
|
148 this.searchGeoTerm = null;
|
|
149 this.geonames = null;
|
|
150 this.selectedPlace = null;
|
|
151 this.redirect(null, "");
|
|
152
|
|
153 }
|
|
154
|
|
155 public String getSearchGeoTerm() {
|
|
156 return searchGeoTerm;
|
|
157 }
|
|
158
|
|
159 public void setSearchGeoTerm(String searchGeoTerm) {
|
|
160 this.searchGeoTerm = searchGeoTerm;
|
|
161 }
|
|
162
|
|
163 public List<Entity> getPlaces() {
|
|
164 return places;
|
|
165 }
|
|
166
|
|
167 public void setPlaces(List<Entity> places) {
|
|
168 this.places = places;
|
|
169 }
|
|
170
|
|
171 public Entity getSelectedPlace() {
|
|
172 return selectedPlace;
|
|
173 }
|
|
174
|
|
175 public void setSelectedPlace(Entity selectedPlace) {
|
|
176 this.selectedPlace = selectedPlace;
|
|
177 }
|
|
178
|
|
179 public int getGeonamesSize(){
|
|
180 if(geonames == null)
|
|
181 return 0;
|
|
182 return geonames.size();
|
|
183 }
|
|
184
|
|
185 public List<Geoname> getGeonames() {
|
|
186 return geonames;
|
|
187 }
|
|
188
|
|
189 public void setGeonames(List<Geoname> geonames) {
|
|
190 this.geonames = geonames;
|
|
191 }
|
|
192
|
|
193 public Geoname getSelectedGeoname() {
|
|
194 return selectedGeoname;
|
|
195 }
|
|
196
|
|
197 public void setSelectedGeoname(Geoname selectedGeoname) {
|
|
198 this.selectedGeoname = selectedGeoname;
|
|
199 }
|
|
200
|
|
201 public boolean isShowGeonamePopup() {
|
|
202 return showGeonamePopup;
|
|
203 }
|
|
204
|
|
205 public void setShowGeonamePopup(boolean showGeonamePopup) {
|
|
206 this.showGeonamePopup = showGeonamePopup;
|
|
207 }
|
|
208
|
|
209 public JSONObject getSelectedJSONGeoname() {
|
|
210 return selectedJSONGeoname;
|
|
211 }
|
|
212
|
|
213 public void setSelectedJSONGeoname(JSONObject selectedJSONGeoname) {
|
|
214 this.selectedJSONGeoname = selectedJSONGeoname;
|
|
215 }
|
|
216
|
|
217 public String getSearchPlaceTerm() {
|
|
218 return searchPlaceTerm;
|
|
219 }
|
|
220
|
|
221 public void setSearchPlaceTerm(String searchPlaceTerm) {
|
|
222 this.searchPlaceTerm = searchPlaceTerm;
|
|
223 }
|
|
224
|
|
225 }
|