use of org.json.simple.JSONArray in project spatial-portal by AtlasOfLivingAustralia.
the class AddLayerController method loadMap.
public void loadMap(Event event) {
if (lbListLayers.getSelectedLayers().length > 0) {
String[] sellayers = lbListLayers.getSelectedLayers();
for (String s : sellayers) {
String uid;
String type = "";
String treeName = "";
String treePath = "";
String legendurl = "";
String metadata = "";
JSONArray layerlist = CommonData.getLayerListJSONArray();
for (int j = 0; j < layerlist.size(); j++) {
JSONObject field = (JSONObject) layerlist.get(j);
JSONObject layer = (JSONObject) field.get("layer");
String name = field.get(StringConstants.ID).toString();
if (name.equals(s)) {
uid = layer.get(StringConstants.ID).toString();
type = layer.get(StringConstants.TYPE).toString();
treeName = StringUtils.capitalize(field.get(StringConstants.NAME).toString());
treePath = layer.get("displaypath").toString();
legendurl = CommonData.getGeoServer() + "/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=9&LAYER=" + layer.get(StringConstants.NAME).toString() + "&styles=" + name + "_style";
metadata = CommonData.getLayersServer() + "/layers/view/more/" + uid;
break;
}
}
getMapComposer().addWMSLayer(s, treeName, treePath, (float) 0.75, metadata, legendurl, StringConstants.ENVIRONMENTAL.equalsIgnoreCase(type) ? LayerUtilitiesImpl.GRID : LayerUtilitiesImpl.CONTEXTUAL, null, null, null);
remoteLogger.logMapArea(treeName, "Layer - " + type, treePath, s, metadata);
}
}
this.detach();
}
use of org.json.simple.JSONArray in project spatial-portal by AtlasOfLivingAustralia.
the class PhylogeneticDiversityComposer method fillPDTreeList.
private void fillPDTreeList() {
JSONArray ja = null;
String url = CommonData.getSettings().getProperty(CommonData.PHYLOLIST_URL) + "/phylo/getExpertTrees";
JSONParser jp = new JSONParser();
try {
ja = (JSONArray) jp.parse(Util.readUrl(url));
} catch (ParseException e) {
LOGGER.error("failed to parse getExpertTrees");
}
if (ja == null || ja.size() == 0) {
Events.echoEvent("onClose", this, null);
getMapComposer().showMessage("Phylogenetic diversity tool is currently unavailable.");
return;
}
trees = new Object[ja.size()];
header = new ArrayList<String>();
//restrict header to what is in the zul
for (Component c : getFellow(StringConstants.TREES_HEADER).getChildren()) {
header.add(c.getId().substring(3));
}
int row = 0;
for (int i = 0; i < ja.size(); i++) {
JSONObject j = (JSONObject) ja.get(i);
Map<String, String> pdrow = new HashMap<String, String>();
for (Object o : j.keySet()) {
String key = (String) o;
if (j.containsKey(key) && j.get(key) != null) {
pdrow.put(key, j.get(key).toString());
} else {
pdrow.put(key, null);
}
}
trees[row] = pdrow;
row++;
}
treesList.setModel(new ListModelArray(trees, false));
treesList.setItemRenderer(new ListitemRenderer() {
public void render(Listitem li, Object data, int itemIdx) {
Map<String, String> map = (Map<String, String>) data;
for (int i = 0; i < header.size(); i++) {
String value = map.get(header.get(i));
if (value == null) {
value = "";
}
if ("treeViewUrl".equalsIgnoreCase(header.get(i))) {
Html img = new Html("<i class='icon-info-sign'></i>");
img.setAttribute("link", value.isEmpty() ? CommonData.getSettings().getProperty(CommonData.PHYLOLIST_URL) : value);
Listcell lc = new Listcell();
lc.setParent(li);
img.setParent(lc);
img.addEventListener(StringConstants.ONCLICK, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
//re-toggle the checked flag
Listitem li = (Listitem) event.getTarget().getParent().getParent();
li.getListbox().toggleItemSelection(li);
String metadata = (String) event.getTarget().getAttribute("link");
getMapComposer().activateLink(metadata, "Metadata", false);
}
});
} else {
Listcell lc = new Listcell(value);
lc.setParent(li);
}
}
}
});
treesList.setMultiple(true);
}
use of org.json.simple.JSONArray in project spatial-portal by AtlasOfLivingAustralia.
the class LayerLegendGeneralComposer method afterCompose.
@Override
public void afterCompose() {
super.afterCompose();
MapLayer llc2MapLayer = null;
Map m = Executions.getCurrent().getArg();
if (m != null) {
for (Object o : m.entrySet()) {
if (((Map.Entry) o).getKey() instanceof String && "map_layer".equals(((Map.Entry) o).getKey())) {
llc2MapLayer = (MapLayer) ((Map.Entry) o).getValue();
}
}
}
cbColour.setSelectedIndex(0);
getMapComposer().setFacetsOpenListener(new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
cbColour.open();
}
});
getMapComposer().setLayerLegendNameRefresh(new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
txtLayerName.setValue((String) event.getData());
}
});
init(llc2MapLayer, llc2MapLayer.getSpeciesQuery(), llc2MapLayer.getRedVal(), llc2MapLayer.getGreenVal(), llc2MapLayer.getBlueVal(), llc2MapLayer.getSizeVal(), (int) (llc2MapLayer.getOpacity() * 100), llc2MapLayer.getColourMode(), (StringConstants.GRID.equals(llc2MapLayer.getColourMode())) ? 0 : ((llc2MapLayer.isClustered()) ? 1 : 2), llc2MapLayer.getSizeUncertain());
getFellow("btnSearch").addEventListener(StringConstants.ONCLICK, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
List<String[]> legendLinesFiltered = new ArrayList<String[]>();
String txt = ((Textbox) getFellow("txtSearch")).getValue().toLowerCase();
if (txt.length() > 0) {
Integer groupCount = mapLayer.getClassificationGroupCount();
JSONArray groupObjects = mapLayer.getClassificationObjects();
List<JSONObject> model = new ArrayList<JSONObject>();
for (int i = 0; i < groupCount; i++) {
if (((JSONObject) groupObjects.get(i)).get("name").toString().toLowerCase().contains(txt)) {
model.add((JSONObject) groupObjects.get(i));
}
}
lbClassificationGroup.setModel(new SimpleListModel(model));
lbClassificationGroup.setActivePage(0);
((Button) getFellow("btnClear")).setDisabled(false);
}
}
});
getFellow("btnClear").addEventListener(StringConstants.ONCLICK, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
((Textbox) getFellow("txtSearch")).setValue("");
((Button) getFellow("btnClear")).setDisabled(true);
Integer groupCount = mapLayer.getClassificationGroupCount();
JSONArray groupObjects = mapLayer.getClassificationObjects();
List<JSONObject> model = new ArrayList<JSONObject>();
for (int i = 0; i < groupCount; i++) {
model.add((JSONObject) groupObjects.get(i));
}
lbClassificationGroup.setModel(new SimpleListModel(model));
lbClassificationGroup.setActivePage(0);
}
});
}
use of org.json.simple.JSONArray in project spatial-portal by AtlasOfLivingAustralia.
the class LayerLegendGeneralComposer method setupForClassificationLayers.
private void setupForClassificationLayers() {
if (mapLayer.isPolygonLayer())
return;
String activeLayerName = StringConstants.NONE;
JSONObject field = null;
JSONObject layer = null;
if (mapLayer != null && mapLayer.getUri() != null) {
if (mapLayer.getBaseUri() != null) {
activeLayerName = mapLayer.getBaseUri().replaceAll("^.*&style=", "").replaceAll("&.*", "").replaceAll("_style", "");
} else {
activeLayerName = mapLayer.getUri().replaceAll("^.*&style=", "").replaceAll("&.*", "").replaceAll("_style", "");
}
field = CommonData.getLayer(activeLayerName);
if (field == null)
return;
layer = (JSONObject) field.get("layer");
}
LOGGER.debug("ACTIVE LAYER: " + activeLayerName);
if (mapLayer != null && mapLayer.getSubType() == LayerUtilitiesImpl.ALOC) {
divClassificationPicker.setVisible(true);
//reset content
Integer groupCount = mapLayer.getClassificationGroupCount();
if (groupCount == null) {
mapLayer.setClassificationGroupCount(getClassificationGroupCount(mapLayer.getName().replace("aloc_", "")));
groupCount = 0;
}
for (int i = cbClassificationGroup.getItemCount() - 1; i >= 0; i--) {
cbClassificationGroup.removeItemAt(i);
}
Comboitem ci = new Comboitem(StringConstants.NONE);
ci.setParent(cbClassificationGroup);
for (int i = 1; i <= groupCount; i++) {
new Comboitem("Group " + i).setParent(cbClassificationGroup);
}
//is there a current selection?
Integer groupSelection = mapLayer.getClassificationSelection();
if (groupSelection == null) {
groupSelection = 0;
mapLayer.setClassificationSelection(groupSelection);
}
cbClassificationGroup.setSelectedIndex(groupSelection);
getFellow("btnCreateArea").setVisible(false);
cbClassificationGroup.setVisible(true);
lbClassificationGroup.setVisible(false);
hboxClassificationGroup.setVisible(false);
} else if (layer != null && layer.containsKey("type") && layer.get("type").toString().equalsIgnoreCase("contextual")) {
divClassificationPicker.setVisible(true);
if (mapLayer.getClassificationGroupCount() == null || mapLayer.getClassificationGroupCount() == 0) {
//build
String fieldId = field.get(StringConstants.ID).toString();
JSONParser jp = new JSONParser();
JSONObject objJson = null;
try {
objJson = (JSONObject) jp.parse(Util.readUrl(CommonData.getLayersServer() + "/field/" + fieldId));
} catch (ParseException e) {
LOGGER.error("failed to parse for: " + fieldId);
}
JSONArray objects = (JSONArray) objJson.get("objects");
//sort
List<JSONObject> list = objects.subList(0, objects.size());
Collections.sort(list, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject o1, JSONObject o2) {
String s1 = (o1 == null || !o1.containsKey("name")) ? "" : o1.get("name").toString();
String s2 = (o2 == null || !o2.containsKey("name")) ? "" : o2.get("name").toString();
return s1.compareTo(s2);
}
});
JSONArray obj = new JSONArray();
obj.addAll(list);
mapLayer.setClassificationGroupCount(obj.size());
mapLayer.setClassificationObjects(obj);
}
//reset content
Integer groupCount = mapLayer.getClassificationGroupCount();
JSONArray groupObjects = mapLayer.getClassificationObjects();
lbClassificationGroup.setItemRenderer(new ListitemRenderer<JSONObject>() {
@Override
public void render(Listitem item, JSONObject data, int index) throws Exception {
Checkbox cb = new Checkbox();
final int idx = index;
cb.addEventListener("onCheck", new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
if (mapLayer != null) {
lbClassificationGroup.setMultiple(true);
String v = ((Listcell) event.getTarget().getParent().getParent().getChildren().get(1)).getLabel();
if (((CheckEvent) event).isChecked()) {
selectedList.add(v);
} else {
selectedList.remove(v);
}
lblSelectedCount.setValue(selectedList.size() + " checked");
getFellow("clearSelection").setVisible(selectedList.size() > 0);
getFellow("createInGroup").setVisible(selectedList.size() > 0);
if (getFellowIfAny("createOutGroup") != null)
getFellow("createOutGroup").setVisible(selectedList.size() > 0);
highlightSelect(idx);
}
}
});
determineCheckboxState(cb, data.get("name").toString());
Listcell lc;
lc = new Listcell();
cb.setParent(lc);
lc.setParent(item);
lc = new Listcell(data.get("name").toString());
lc.setParent(item);
lc = new Listcell();
Image img = new Image();
img.setTooltip("Create as an area layer");
img.setClass("icon-plus-sign");
img.setParent(lc);
lc.setParent(item);
final JSONObject j = data;
img.addEventListener("onClick", new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
createAreaEcho(j.get("pid").toString());
}
});
lc = new Listcell();
img = new Image();
img.setTooltip("Zoom to area");
img.setClass("icon-zoom-in");
img.setParent(lc);
lc.setParent(item);
img.addEventListener("onClick", new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
List<Double> b = Util.getBoundingBox(j.get("bbox").toString());
BoundingBox bbox = new BoundingBox();
bbox.setMinLongitude(b.get(0).floatValue());
bbox.setMinLatitude(b.get(1).floatValue());
bbox.setMaxLongitude(b.get(2).floatValue());
bbox.setMaxLatitude(b.get(3).floatValue());
getMapComposer().getOpenLayersJavascript().execute(getMapComposer().getOpenLayersJavascript().zoomToBoundingBox(bbox, false));
}
});
}
});
lbClassificationGroup.addEventListener("onSelect", new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
if (mapLayer != null) {
highlightSelect(lbClassificationGroup.getSelectedIndex());
}
}
});
List<JSONObject> model = new ArrayList<JSONObject>();
for (int i = 0; i < groupCount; i++) {
model.add((JSONObject) groupObjects.get(i));
}
lbClassificationGroup.setModel(new SimpleListModel(model));
//is there a current selection?
Integer groupSelection = mapLayer.getClassificationSelection();
if (groupSelection == null) {
groupSelection = 0;
mapLayer.setClassificationSelection(groupSelection);
}
getFellow("btnCreateArea").setVisible(true);
getFellow("btnCreateArea").setVisible(false);
cbClassificationGroup.setVisible(false);
lbClassificationGroup.setVisible(true);
hboxClassificationGroup.setVisible(true);
} else {
getFellow("btnCreateArea").setVisible(false);
divClassificationPicker.setVisible(false);
}
}
use of org.json.simple.JSONArray in project spatial-portal by AtlasOfLivingAustralia.
the class MapComposer method activateLink.
public void activateLink(String uri, String label, boolean isExternal, String downloadPid) {
closeExternalContentWindow();
Window externalContentWindow = (Window) Executions.createComponents("WEB-INF/zul/ExternalContent.zul", layerControls, null);
if (isExternal) {
// change browsers current location
Clients.evalJavaScript("window.location.href ='" + uri + "';");
} else {
Iframe iframe = (Iframe) externalContentWindow.getFellow("externalContentIframe");
Html html = (Html) externalContentWindow.getFellow("externalContentHTML");
String newUri = uri;
if (newUri.charAt(0) == '*') {
//html content
newUri = newUri.substring(1);
//url
iframe.setHeight("0px");
iframe.setSrc("");
String content;
if ("download".equalsIgnoreCase(label)) {
// Added fast download option -
// TODO refactor so this can be generated from same code that sets the downloadUrl (uri) in BiocacheQuery.java
String fastDownloadUrl = newUri.replaceFirst("/occurrences/download", "/occurrences/index/download");
StringBuilder sbContent = new StringBuilder();
sbContent.append("<p id='termsOfUseDownload' style='padding:10px; margin-bottom: 0;'>");
sbContent.append("By downloading this content you are agreeing to use it in accordance ");
sbContent.append("with the Atlas of Living Australia <a href='http://www.ala.org.au/about/terms-of-use/#TOUusingcontent'>Terms of Use</a>");
sbContent.append(" and any Data Provider Terms associated with the data download. ");
sbContent.append("<br/><br/>");
sbContent.append("Please provide the following details before downloading (* required)");
sbContent.append("</p>");
sbContent.append(" <form id='downloadForm' onSubmit='downloadSubmitButtonClick(); return false;' style='padding:10px;'>");
sbContent.append(" <input type='hidden' name='url' id='downloadUrl' value='").append(uri).append("'/>");
sbContent.append(" <input type='hidden' name='url' id='fastDownloadUrl' value='").append(fastDownloadUrl).append("'/>");
sbContent.append(" <fieldset>");
sbContent.append(" <p><label for='email'>Email</label>");
sbContent.append(" <input type='text' name='email' id='email' value='' size='30' />");
sbContent.append(" </p>");
sbContent.append(" <p><label for='filename'>File Name</label>");
sbContent.append(" <input type='text' name='filename' id='filename' value='data' size='30' />");
sbContent.append(" </p>");
sbContent.append(" <p><label for='reasonTypeId' style='vertical-align: top'>Download Reason *</label>");
sbContent.append(" <select name='reasonTypeId' id='reasonTypeId'>");
sbContent.append(" <option value=''>-- select a reason --</option>");
JSONArray dlreasons = CommonData.getDownloadReasons();
for (int i = 0; i < dlreasons.size(); i++) {
JSONObject dlr = (JSONObject) dlreasons.get(i);
sbContent.append(" <option value='").append((Long) dlr.get(StringConstants.ID)).append("'>").append(dlr.get(StringConstants.NAME)).append("</option>");
}
sbContent.append(" <select></p>");
sbContent.append(" <input style='display:none' type='radio' name='downloadType' value='fast' class='tooltip' checked='checked' title='Faster download but fewer fields are included'>");
sbContent.append(" <p style='clear:both;'> </p>");
sbContent.append(" <p style='text-align:center;'><input type='submit' value='Download All Records' id='downloadSubmitButton'/></p>");
sbContent.append(" </fieldset>");
sbContent.append(" </form>");
content = sbContent.toString();
} else {
content = newUri;
}
//content
html.setContent(content);
html.setStyle("overflow: scroll;padding: 0 10px;");
//for the 'reset window' button
((ExternalContentComposer) externalContentWindow).setSrc("");
//update linked button
externalContentWindow.getFellow(StringConstants.BREAKOUT).setVisible(false);
externalContentWindow.setContentStyle("overflow:auto");
} else {
//url
iframe.setHeight("100%");
iframe.setSrc(newUri);
//content
html.setContent("");
//for the 'reset window' button
((ExternalContentComposer) externalContentWindow).setSrc(newUri);
//update linked button
((Toolbarbutton) externalContentWindow.getFellow(StringConstants.BREAKOUT)).setHref(newUri);
externalContentWindow.getFellow(StringConstants.BREAKOUT).setVisible(true);
externalContentWindow.setContentStyle("overflow:visible");
}
if (StringUtils.isNotBlank(downloadPid)) {
String downloadUrl = CommonData.getSatServer() + "/ws/download/" + downloadPid;
if (downloadPid.startsWith("http")) {
downloadUrl = downloadPid;
}
((Toolbarbutton) externalContentWindow.getFellow("download")).setHref(downloadUrl);
externalContentWindow.getFellow("download").setVisible(true);
} else {
((Toolbarbutton) externalContentWindow.getFellow("download")).setHref("");
externalContentWindow.getFellow("download").setVisible(false);
}
// use the link description as the popup caption
((Caption) externalContentWindow.getFellow("caption")).setLabel(label);
externalContentWindow.setPosition("center");
try {
externalContentWindow.setParent(layerControls);
externalContentWindow.doModal();
} catch (Exception e) {
LOGGER.error("error opening information popup", e);
}
}
}
Aggregations