List of usage examples for org.json JSONArray put
public JSONArray put(Object value)
From source file:com.shishicai.app.utils.XmlToJson.java
private JSONObject convertTagToJson(Tag tag, boolean isListElement) { JSONObject json = new JSONObject(); // Content is injected as a key/value if (tag.getContent() != null) { String path = tag.getPath(); String name = getContentNameReplacement(path, DEFAULT_CONTENT_NAME); putContent(path, json, name, tag.getContent()); }//from w w w .ja v a 2 s. co m try { HashMap<String, ArrayList<Tag>> groups = tag.getGroupedElements(); // groups by tag names so that we can detect lists or single elements for (ArrayList<Tag> group : groups.values()) { if (group.size() == 1) { // element, or list of 1 Tag child = group.get(0); if (isForcedList(child)) { // list of 1 JSONArray list = new JSONArray(); list.put(convertTagToJson(child, true)); String childrenNames = tag.getChild(0).getName(); json.put(childrenNames, list); } else { // stand alone element if (child.hasChildren()) { JSONObject jsonChild = convertTagToJson(child, false); json.put(child.getName(), jsonChild); } else { String path = child.getPath(); putContent(path, json, child.getName(), child.getContent()); } } } else { // list JSONArray list = new JSONArray(); for (Tag child : group) { list.put(convertTagToJson(child, true)); } String childrenNames = group.get(0).getName(); json.put(childrenNames, list); } } return json; // if (tag.isList() || isForcedList(tag)) { // JSONArray list = new JSONArray(); // ArrayList<Tag> children = tag.getChildren(); // for (Tag child : children) { // list.put(convertTagToJson(child, true)); // } // String childrenNames = tag.getChild(0).getName(); // json.put(childrenNames, list); // return json; // } else { // ArrayList<Tag> children = tag.getChildren(); // if (children.size() == 0) { // if (!isListElement) { // putContent(json, tag.getName(), tag.getContent()); // } // } else { // for (Tag child : children) { // if (child.hasChildren()) { // JSONObject jsonChild = convertTagToJson(child, false); // json.put(child.getName(), jsonChild); // } else { // putContent(json, child.getName(), child.getContent()); // } // } // } // return json; // } } catch (JSONException e) { e.printStackTrace(); } return null; }
From source file:com.distimo.sdk.Utils.java
static JSONArray parseToJSON(ArrayList<Entry<String, Object>> array) { JSONArray result = new JSONArray(); for (Entry<String, Object> entry : array) { result.put(parseToJSON(entry.getKey(), entry.getValue())); }/*from w w w .j av a 2 s.c o m*/ return result; }
From source file:org.sc.probro.servlets.BiothesaurusQueryServlet.java
private JSONArray renderDocumentsAsHits(BiothesaurusSearcher searcher, Collection<Document> docs) throws BrokerException { JSONArray array = new JSONArray(); int i = 0;//w w w . java 2s. c o m for (Document doc : docs) { JSONObject obj = new JSONObject(); try { String id = doc.getField("protein-id").stringValue(); obj.put("id", id); obj.put("type", "protein"); obj.put("accession", new JSONArray()); obj.put("description", new JSONArray()); for (org.apache.lucene.document.Field f : doc.getFields("description")) { obj.append("description", f.stringValue()); } Collection<String> pros = searcher.convertToPRO(doc); if (pros != null) { for (String pro : pros) { obj.append("accession", pro); } } } catch (JSONException e) { throw new BrokerException(e); } array.put(obj); } return array; }
From source file:com.ichi2.libanki.test.SchedTestCase.java
@MediumTest public void test_learn_day() { Collection d = Shared.getEmptyDeck(getInstrumentation().getContext()); assertNotNull(d);// w ww . ja va 2 s . c o m // add note Note f = d.newNote(); f.setitem("Front", "one"); d.addNote(f); d.reset(); Card c = d.getSched().getCard(); try { d.getSched()._cardConf(c).getJSONObject("new").put("delays", new JSONArray("[1, 10, 1440, 2880]")); } catch (JSONException e) { throw new RuntimeException(e); } // pass it d.getSched().answerCard(c, 2); // two reps to graduate, 1 more today assertTrue(c.getLeft() % 1000 == 3); assertTrue(c.getLeft() / 1000 == 1); assertTrue(Arrays.equals(d.getSched().counts(), new int[] { 0, 1, 0 })); c = d.getSched().getCard(); assertTrue(d.getSched().nextIvl(c, 2) == 86400); // answering it will place it in queue 3 d.getSched().answerCard(c, 2); assertTrue(c.getDue() == d.getSched().getToday() + 1); assertTrue(c.getQueue() == 3); assertNull(d.getSched().getCard()); // for testing, move it back a day c.setDue(c.getDue() - 1); c.flush(); d.reset(); assertTrue(Arrays.equals(d.getSched().counts(), new int[] { 0, 1, 0 })); c = d.getSched().getCard(); // nextIvl should work assertTrue(d.getSched().nextIvl(c, 2) == 86400 * 2); // if we fail it, it should be back in the correct queue d.getSched().answerCard(c, 1); assertTrue(c.getQueue() == 1); d.undo(); d.reset(); c = d.getSched().getCard(); d.getSched().answerCard(c, 2); // simulate the passing of another two days c.setDue(c.getDue() - 2); c.flush(); d.reset(); // the last pass should graduate it into a review card assertTrue(d.getSched().nextIvl(c, 2) == 86400); d.getSched().answerCard(c, 2); assertTrue((c.getQueue() == c.getType()) && (c.getType() == 2)); // if the lapse step is tomorrow, failing it should handle the counts correctly c.setDue(0); c.flush(); d.reset(); assertTrue(Arrays.equals(d.getSched().counts(), new int[] { 0, 0, 1 })); JSONArray ja = new JSONArray(); ja.put(1440); try { d.getSched()._cardConf(c).getJSONObject("lapse").put("delays", ja); } catch (JSONException e) { throw new RuntimeException(e); } c = d.getSched().getCard(); d.getSched().answerCard(c, 1); assertTrue(c.getQueue() == 3); assertTrue(Arrays.equals(d.getSched().counts(), new int[] { 0, 0, 0 })); }
From source file:com.jennifer.ui.util.scale.TimeScale.java
public JSONArray ticks(String type, int step) { long start = this.minLong(); long end = this.maxLong(); JSONArray times = new JSONArray(); while (start < end) { times.put(start); start = TimeUtil.add(start, type, step); }//from w ww .j av a 2 s.c om if (start > end) { start = end; } times.put(start); double first = this.get(times.getLong(0)); double second = this.get(times.getLong(1)); _rangeBand = second - first; return times; }
From source file:com.jennifer.ui.util.scale.TimeScale.java
public JSONArray realTicks(String type, int step) { long start = this.minLong(); long end = this.maxLong(); JSONArray times = new JSONArray(); Calendar c = Calendar.getInstance(); Date date = TimeUtil.get(start); Date realStart = null;//w w w .ja v a 2 s .c o m c.setTime(date); if (Time.YEARS.equals(type)) { c.set(c.get(Calendar.YEAR), 1, 1, 0, 0, 0); } else if (Time.MONTHS.equals(type)) { c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), 1, 0, 0, 0); } else if (Time.DAYS.equals(type)) { c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 0, 0, 0); } else if (Time.HOURS.equals(type)) { c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), c.get(Calendar.HOUR_OF_DAY), 0, 0); } else if (Time.MINUTES.equals(type)) { c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), 0); } else if (Time.SECONDS.equals(type)) { c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), c.get(Calendar.SECOND)); } realStart = c.getTime(); long start2 = realStart.getTime(); while (start2 < end) { times.put(start2); start2 = TimeUtil.add(start2, type, step); } double first = this.get(times.getLong(1)); double second = this.get(times.getLong(2)); _rangeBand = second - first; return times; }
From source file:ai.susi.mind.SusiTransfer.java
/** * A conclusion from choices is done by the application of a function on the choice set. * This may be done by i.e. counting the number of choices or extracting a maximum element. * @param choices the given set of json objects from the data object of a SusiThought * @returnan array of json objects which are the extraction of given choices according to the given mapping */// ww w. j a va 2 s . co m public JSONArray conclude(JSONArray choices) { JSONArray a = new JSONArray(); if (this.selectionMapping != null && this.selectionMapping.size() == 1) { // test if this has an aggregation key: AVG, COUNT, MAX, MIN, SUM final String aggregator = this.selectionMapping.keySet().iterator().next(); final String aggregator_as = this.selectionMapping.get(aggregator); if (aggregator.startsWith("COUNT(") && aggregator.endsWith(")")) { // TODO: there should be a special pattern for this to make it more efficient return a.put(new JSONObject().put(aggregator_as, choices.length())); } if (aggregator.startsWith("MAX(") && aggregator.endsWith(")")) { final AtomicDouble max = new AtomicDouble(Double.MIN_VALUE); String c = aggregator.substring(4, aggregator.length() - 1); choices.forEach(json -> max.set(Math.max(max.get(), ((JSONObject) json).getDouble(c)))); return a.put(new JSONObject().put(aggregator_as, max.get())); } if (aggregator.startsWith("MIN(") && aggregator.endsWith(")")) { final AtomicDouble min = new AtomicDouble(Double.MAX_VALUE); String c = aggregator.substring(4, aggregator.length() - 1); choices.forEach(json -> min.set(Math.min(min.get(), ((JSONObject) json).getDouble(c)))); return a.put(new JSONObject().put(aggregator_as, min.get())); } if (aggregator.startsWith("SUM(") && aggregator.endsWith(")")) { final AtomicDouble sum = new AtomicDouble(0.0d); String c = aggregator.substring(4, aggregator.length() - 1); choices.forEach(json -> sum.addAndGet(((JSONObject) json).getDouble(c))); return a.put(new JSONObject().put(aggregator_as, sum.get())); } if (aggregator.startsWith("AVG(") && aggregator.endsWith(")")) { final AtomicDouble sum = new AtomicDouble(0.0d); String c = aggregator.substring(4, aggregator.length() - 1); choices.forEach(json -> sum.addAndGet(((JSONObject) json).getDouble(c))); return a.put(new JSONObject().put(aggregator_as, sum.get() / choices.length())); } } if (this.selectionMapping != null && this.selectionMapping.size() == 2) { Iterator<String> ci = this.selectionMapping.keySet().iterator(); String aggregator = ci.next(); String column = ci.next(); if (column.indexOf('(') >= 0) { String s = aggregator; aggregator = column; column = s; } final String aggregator_as = this.selectionMapping.get(aggregator); final String column_as = this.selectionMapping.get(column); final String column_final = column; if (aggregator.startsWith("PERCENT(") && aggregator.endsWith(")")) { final AtomicDouble sum = new AtomicDouble(0.0d); String c = aggregator.substring(8, aggregator.length() - 1); choices.forEach(json -> sum.addAndGet(((JSONObject) json).getDouble(c))); choices.forEach(json -> a.put( new JSONObject().put(aggregator_as, 100.0d * ((JSONObject) json).getDouble(c) / sum.get()) .put(column_as, ((JSONObject) json).get(column_final)))); return a; } } // this.selectionMapping == null -> extract everything for (Object json : choices) { JSONObject extraction = this.extract((JSONObject) json); if (extraction.length() > 0) a.put(extraction); } return a; }
From source file:com.rapid.actions.Rapid.java
@Override public JSONObject doAction(RapidRequest rapidRequest, JSONObject jsonAction) throws Exception { JSONObject result = new JSONObject(); String action = jsonAction.getString("actionType"); RapidHttpServlet rapidServlet = rapidRequest.getRapidServlet(); ServletContext servletContext = rapidServlet.getServletContext(); String newAppId = null;// www. j av a 2s.co m // get the id of the app we're about to manipulate String appId = jsonAction.getString("appId"); // get the version of the app we're about to manipulate String appVersion = jsonAction.optString("version", null); // get the application we're about to manipulate Application app = rapidServlet.getApplications().get(appId, appVersion); // only if we had an application if (app != null) { // recreate the rapid request using the application we wish to manipulate RapidRequest rapidActionRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // check the action if ("GETAPPS".equals(action)) { // create a json array for holding our apps JSONArray jsonApps = new JSONArray(); // get a sorted list of the applications for (String id : rapidServlet.getApplications().getIds()) { // loop the versions for (String version : rapidServlet.getApplications().getVersions(id).keySet()) { // get the this application version Application application = rapidServlet.getApplications().get(id, version); // get the security SecurityAdapter security = application.getSecurityAdapter(); // now emulate the app we are looping RapidRequest appSecurityRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), application); // check the user password if (security.checkUserPassword(appSecurityRequest, rapidRequest.getUserName(), rapidRequest.getUserPassword())) { // check the users permission to design this application boolean adminPermission = security.checkUserRole(appSecurityRequest, com.rapid.server.Rapid.DESIGN_ROLE); // if app is rapid do a further check if (adminPermission && "rapid".equals(application.getId())) adminPermission = application.getSecurityAdapter().checkUserRole(appSecurityRequest, com.rapid.server.Rapid.SUPER_ROLE); // if we got permssion - add this application to the list if (adminPermission) { // create a json object JSONObject jsonApplication = new JSONObject(); // add the details we want jsonApplication.put("value", application.getId()); jsonApplication.put("text", application.getName() + " - " + application.getTitle()); // add the object to the collection jsonApps.put(jsonApplication); // no need to check any further versions break; } } // password check } // version loop } // app loop // add the actions to the result result.put("applications", jsonApps); // if there was at least one app if (jsonApps.length() > 0) { // fetch the database drivers JSONArray jsonDatabaseDrivers = rapidServlet.getJsonDatabaseDrivers(); // check we have some database drivers if (jsonDatabaseDrivers != null) { // prepare the database driver collection we'll send JSONArray jsonDrivers = new JSONArray(); // loop what we have for (int i = 0; i < jsonDatabaseDrivers.length(); i++) { // get the item JSONObject jsonDatabaseDriver = jsonDatabaseDrivers.getJSONObject(i); // make a simpler send item JSONObject jsonDriver = new JSONObject(); // add type jsonDriver.put("value", jsonDatabaseDriver.get("class")); // add name jsonDriver.put("text", jsonDatabaseDriver.get("name")); // add to collection jsonDrivers.put(jsonDriver); } // add the database drivers to the result result.put("databaseDrivers", jsonDrivers); } // fetch the connection adapters JSONArray jsonConnectionAdapters = rapidServlet.getJsonConnectionAdapters(); // check we have some database drivers if (jsonConnectionAdapters != null) { // prepare the database driver collection we'll send JSONArray jsonAdapters = new JSONArray(); // loop what we have for (int i = 0; i < jsonConnectionAdapters.length(); i++) { // get the item JSONObject jsonConnectionAdapter = jsonConnectionAdapters.getJSONObject(i); // make a simpler send item JSONObject jsonSendAdapter = new JSONObject(); // add type jsonSendAdapter.put("value", jsonConnectionAdapter.get("class")); // add name jsonSendAdapter.put("text", jsonConnectionAdapter.get("name")); // add to collection jsonAdapters.put(jsonSendAdapter); } // add the database drivers to the result result.put("connectionAdapters", jsonAdapters); } // fetch the security adapters JSONArray jsonSecurityAdapters = rapidServlet.getJsonSecurityAdapters(); // check we have some security adapters if (jsonSecurityAdapters != null) { // prepare the security adapter collection we'll send JSONArray jsonAdapters = new JSONArray(); // loop what we have for (int i = 0; i < jsonSecurityAdapters.length(); i++) { // get the item JSONObject jsonSecurityAdapter = jsonSecurityAdapters.getJSONObject(i); // make a simpler send item JSONObject jsonSendAdapter = new JSONObject(); // add type jsonSendAdapter.put("value", jsonSecurityAdapter.get("type")); // add name jsonSendAdapter.put("text", jsonSecurityAdapter.get("name")); // add canManageRoles jsonSendAdapter.put("canManageRoles", jsonSecurityAdapter.get("canManageRoles")); // add canManageUsers jsonSendAdapter.put("canManageUsers", jsonSecurityAdapter.get("canManageUsers")); // add canManageUserRoles jsonSendAdapter.put("canManageUserRoles", jsonSecurityAdapter.get("canManageUserRoles")); // add to collection jsonAdapters.put(jsonSendAdapter); } // add the security adapters to the result result.put("securityAdapters", jsonAdapters); } // fetch the form adapters JSONArray jsonFormAdapters = rapidServlet.getJsonFormAdapters(); // prepare the collection we'll send JSONArray jsonAdapters = new JSONArray(); // create an entry for no form adapter JSONObject jsonSendAdapter = new JSONObject(); // no value jsonSendAdapter.put("value", ""); // None as text jsonSendAdapter.put("text", "None"); // add the None member first jsonAdapters.put(jsonSendAdapter); // check we have some database drivers if (jsonFormAdapters != null) { // loop what we have for (int i = 0; i < jsonFormAdapters.length(); i++) { // get the item JSONObject jsonAdapter = jsonFormAdapters.getJSONObject(i); // make a simpler send item jsonSendAdapter = new JSONObject(); // add type jsonSendAdapter.put("value", jsonAdapter.get("type")); // add name jsonSendAdapter.put("text", jsonAdapter.get("name")); // add to collection jsonAdapters.put(jsonSendAdapter); } // add the database drivers to the result result.put("formAdapters", jsonAdapters); } // prepare the collection we'll send JSONArray jsonThemes = new JSONArray(); // create an entry for no template JSONObject jsonTheme = new JSONObject(); // no value jsonTheme.put("value", ""); // None as text jsonTheme.put("text", "None"); // add the None member first jsonThemes.put(jsonTheme); // get the themes List<Theme> themes = rapidServlet.getThemes(); // check we have some if (themes != null) { // loop what we have for (Theme theme : themes) { // make a simpler send item jsonTheme = new JSONObject(); // add type jsonTheme.put("value", theme.getType()); // add name jsonTheme.put("text", theme.getName()); // add to collection jsonThemes.put(jsonTheme); } // add the database drivers to the result result.put("themes", jsonThemes); } // process the actions and only send the name and type JSONArray jsonSendActions = new JSONArray(); JSONArray jsonActions = rapidServlet.getJsonActions(); for (int i = 0; i < jsonActions.length(); i++) { JSONObject jsonSysAction = jsonActions.getJSONObject(i); // do not send the rapid action if (!"rapid".equals(jsonSysAction.getString("type"))) { JSONObject jsonSendAction = new JSONObject(); jsonSendAction.put("name", jsonSysAction.get("name")); jsonSendAction.put("type", jsonSysAction.get("type")); jsonSendActions.put(jsonSendAction); } } // add the actions to the result result.put("actions", jsonSendActions); // process the controls and only send the name and type for canUserAdd JSONArray jsonSendControls = new JSONArray(); JSONArray jsonControls = rapidServlet.getJsonControls(); for (int i = 0; i < jsonControls.length(); i++) { JSONObject jsonSysControl = jsonControls.getJSONObject(i); // only present controls users can add if (jsonSysControl.optBoolean("canUserAdd")) { JSONObject jsonSendControl = new JSONObject(); jsonSendControl.put("name", jsonSysControl.get("name")); jsonSendControl.put("type", jsonSysControl.get("type")); jsonSendControls.put(jsonSendControl); } } // add the controls to the result result.put("controls", jsonSendControls); // add the devices result.put("devices", rapidServlet.getDevices()); } // at least one app check // add the current userName to the result result.put("userName", rapidRequest.getUserName()); } else if ("GETVERSIONS".equals(action)) { // prepare a json array we're going to include in the result JSONArray jsonVersions = new JSONArray(); // get the versions Versions versions = rapidServlet.getApplications().getVersions(appId); // if there are any if (versions != null) { // loop the list of applications sorted by id (with rapid last) for (Application application : versions.sort()) { // get the security SecurityAdapter security = application.getSecurityAdapter(); // now emulate the app we are looping RapidRequest appSecurityRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), application); // check the user password if (security.checkUserPassword(appSecurityRequest, rapidRequest.getUserName(), rapidRequest.getUserPassword())) { // check the users permission to administer this application boolean adminPermission = security.checkUserRole(appSecurityRequest, com.rapid.server.Rapid.ADMIN_ROLE); // if app is rapid do a further check if (adminPermission && "rapid".equals(application.getId())) adminPermission = application.getSecurityAdapter().checkUserRole(appSecurityRequest, com.rapid.server.Rapid.SUPER_ROLE); // check the RapidDesign role is present in the users roles for this application if (adminPermission) { // make a json object for this version JSONObject jsonVersion = new JSONObject(); // add the version jsonVersion.put("value", application.getVersion()); // derive the text String text = application.getVersion(); // if live add some if (application.getStatus() == 1) text += " - (Live)"; // add the title jsonVersion.put("text", text); // put the entry into the collection jsonVersions.put(jsonVersion); } // design permission } // password check } // versions loop } // got versions check // add the versions to the result result.put("versions", jsonVersions); } else if ("GETVERSION".equals(action)) { // get the security SecurityAdapter security = app.getSecurityAdapter(); // password check if (security.checkUserPassword(rapidActionRequest, rapidRequest.getUserName(), rapidRequest.getUserPassword())) { // check the users permission to design this application boolean adminPermission = security.checkUserRole(rapidActionRequest, com.rapid.server.Rapid.DESIGN_ROLE); // if app is rapid do a further check if (adminPermission && "rapid".equals(app.getId())) adminPermission = app.getSecurityAdapter().checkUserRole(rapidActionRequest, com.rapid.server.Rapid.SUPER_ROLE); if (adminPermission) { // add the name result.put("name", app.getName()); // add the version result.put("version", app.getVersion()); // add the status result.put("status", app.getStatus()); // add the title result.put("title", app.getTitle()); // add the description result.put("description", app.getDescription()); // add the form adapter result.put("formAdapterType", app.getFormAdapterType()); // add whether to show control ids result.put("showControlIds", app.getShowControlIds()); // add whether to show action ids result.put("showActionIds", app.getShowActionIds()); // create a simplified array to hold the pages JSONArray jsonPages = new JSONArray(); // retrieve the pages List<PageHeader> pages = app.getPages().getSortedPages(); // check we have some if (pages != null) { for (PageHeader page : pages) { JSONObject jsonPage = new JSONObject(); jsonPage.put("text", page.getName() + " - " + page.getTitle()); jsonPage.put("value", page.getId()); jsonPages.put(jsonPage); } } // add the pages result.put("pages", jsonPages); // add the start page Id result.put("startPageId", app.getStartPageId()); // add the styles result.put("themeType", app.getThemeType()); result.put("styles", app.getStyles()); result.put("statusBarColour", app.getStatusBarColour()); result.put("statusBarHighlightColour", app.getStatusBarHighlightColour()); result.put("statusBarTextColour", app.getStatusBarTextColour()); result.put("statusBarIconColour", app.getStatusBarIconColour()); // add the security adapter result.put("securityAdapter", app.getSecurityAdapterType()); // add whether there is device security result.put("deviceSecurity", app.getDeviceSecurity()); // add whether password is retained on Rapid Mobile result.put("noRetainPassword", app.getNoRetainPassword()); // add action types result.put("actionTypes", app.getActionTypes()); // add control types result.put("controlTypes", app.getControlTypes()); // create an array for the database connections JSONArray jsonDatabaseConnections = new JSONArray(); // check we have some database connections if (app.getDatabaseConnections() != null) { // remember the index int index = 0; // loop and add to jsonArray for (DatabaseConnection dbConnection : app.getDatabaseConnections()) { // create an object for the database connection JSONObject jsonDBConnection = new JSONObject(); // set the index as the value jsonDBConnection.put("value", index); // set the name as the text jsonDBConnection.put("text", dbConnection.getName()); // add to our collection jsonDatabaseConnections.put(jsonDBConnection); // inc the index index++; } } // add database connections result.put("databaseConnections", jsonDatabaseConnections); // create an array for the soa webservices JSONArray jsonWebservices = new JSONArray(); // check we have some webservices if (app.getWebservices() != null) { // sort them by their name Collections.sort(app.getWebservices(), new Comparator<Webservice>() { @Override public int compare(Webservice o1, Webservice o2) { if (o1 == null) { return -1; } else if (o2 == null) { return 1; } else { return Comparators.AsciiCompare(o1.getName(), o2.getName(), false); } } }); // loop and add to jsonArray for (Webservice webservice : app.getWebservices()) { jsonWebservices.put(webservice.getName()); } } // add webservices connections result.put("webservices", jsonWebservices); // create an array for the parameters JSONArray jsonParameters = new JSONArray(); // check we have some webservices if (app.getParameters() != null) { // sort them by their name Collections.sort(app.getParameters(), new Comparator<Parameter>() { @Override public int compare(Parameter o1, Parameter o2) { if (o1 == null) { return -1; } else if (o2 == null) { return 1; } else { return Comparators.AsciiCompare(o1.getName(), o2.getName(), false); } } }); // loop and add to jsonArray for (Parameter parameter : app.getParameters()) { jsonParameters.put(parameter.getName()); } } // add webservices connections result.put("parameters", jsonParameters); // create an array for the resources JSONArray jsonResources = new JSONArray(); // check we have some resources if (app.getAppResources() != null) { // sort them by their name Collections.sort(app.getAppResources(), new Comparator<Resource>() { @Override public int compare(Resource o1, Resource o2) { if (o1 == null) { return -1; } else if (o2 == null) { return 1; } else { return Comparators.AsciiCompare(o1.getName(), o2.getName(), false); } } }); // loop and adds2 to jsonArray for (Resource resource : app.getAppResources()) { jsonResources.put(resource.getName()); } } // add webservices connections result.put("resources", jsonResources); // create an array for the app backups JSONArray jsonAppBackups = new JSONArray(); // check we have some app backups if (app.getApplicationBackups(rapidServlet) != null) { // loop and add to jsonArray for (Application.Backup appBackup : app.getApplicationBackups(rapidServlet)) { // create the backup json object JSONObject jsonBackup = new JSONObject(); // create a date formatter //SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); // populate it jsonBackup.append("id", appBackup.getId()); jsonBackup.append("date", rapidServlet.getLocalDateTimeFormatter().format(appBackup.getDate())); jsonBackup.append("user", appBackup.getUser()); jsonBackup.append("size", appBackup.getSize()); // add it jsonAppBackups.put(jsonBackup); } } // add webservices connections result.put("appbackups", jsonAppBackups); // add the max number of application backups result.put("appBackupsMaxSize", app.getApplicationBackupsMaxSize()); // create an array for the page backups JSONArray jsonPageBackups = new JSONArray(); // check we have some app backups if (app.getPageBackups(rapidServlet) != null) { // loop and add to jsonArray for (Application.Backup appBackup : app.getPageBackups(rapidServlet)) { // create the backup json object JSONObject jsonBackup = new JSONObject(); // populate it jsonBackup.append("id", appBackup.getId()); jsonBackup.append("page", appBackup.getName()); jsonBackup.append("date", rapidServlet.getLocalDateTimeFormatter().format(appBackup.getDate())); jsonBackup.append("user", appBackup.getUser()); jsonBackup.append("size", appBackup.getSize()); // add it jsonPageBackups.put(jsonBackup); } } // add webservices connections result.put("pagebackups", jsonPageBackups); // add the max number of page backups result.put("pageBackupsMaxSize", app.getPageBackupsMaxSize()); } // permission check } // password check } else if ("GETDBCONN".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the database connections List<DatabaseConnection> dbConns = app.getDatabaseConnections(); // check we have database connections if (dbConns != null) { // check the index we where given will retieve a database connection if (index > -1 && index < dbConns.size()) { // get the database connection DatabaseConnection dbConn = dbConns.get(index); // add the name result.put("name", dbConn.getName()); // add the driver type result.put("driver", dbConn.getDriverClass()); // add the connection adapter class result.put("connectionString", dbConn.getConnectionString()); // add the connection adapter class result.put("connectionAdapter", dbConn.getConnectionAdapterClass()); // add the user name result.put("userName", dbConn.getUserName()); // add the password if ("".equals(dbConn.getPassword())) { result.put("password", ""); } else { result.put("password", "********"); } } } } else if ("GETSOA".equals(action)) { // retain the JSON object which we will return JSONObject jsonWebservice; // get the index int index = jsonAction.getInt("index"); // get the database connections List<Webservice> webservices = app.getWebservices(); // check we have database connections if (webservices != null) { // check the index we where given will retieve a database connection if (index > -1 && index < webservices.size()) { // get the webservice from the collection Webservice webservice = webservices.get(index); // convert it into a json object jsonWebservice = new JSONObject(webservice); // add the type jsonWebservice.put("type", webservice.getClass().getSimpleName()); // add the user to the response result.put("webservice", jsonWebservice); } } } else if ("GETSEC".equals(action)) { // get the securityAdapter type from the jsonAction String securityAdapterType = jsonAction.getString("securityAdapter"); // assume the current class has not been set String securityAdapterClass = ""; // get all of the available security adapters JSONArray jsonSecurityAdapters = rapidServlet.getJsonSecurityAdapters(); // check we have some security adapters if (jsonSecurityAdapters != null) { // loop what we have for (int i = 0; i < jsonSecurityAdapters.length(); i++) { // get the item JSONObject jsonSecurityAdapter = jsonSecurityAdapters.getJSONObject(i); // if this is the type that came in if (securityAdapterType.equals(jsonSecurityAdapter.getString("type"))) { // retain the name securityAdapterClass = jsonSecurityAdapter.getString("class"); // we're done break; } } } // get the current app security adapter SecurityAdapter security = app.getSecurityAdapter(); // if we got one if (security != null) { // if it's different from what came in if (!securityAdapterClass.equals(security.getClass().getCanonicalName())) { // set the new security adapter app.setSecurityAdapter(servletContext, securityAdapterType); // read it back again security = app.getSecurityAdapter(); } // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // get the roles Roles roles = security.getRoles(rapidRequest); // add the entire roles collection to the response result.put("roles", roles); // if we had some roles if (roles != null) { // prepapre a list of just the role names (not descriptions) List<String> roleNames = new ArrayList<String>(); // loop the roles for (Role role : roles) { roleNames.add(role.getName()); } // add the rolenames result.put("roleNames", roleNames); } // add the users to the response result.put("users", security.getUsers(rapidRequest)); } // got security } else if ("GETUSER".equals(action)) { // get the userName from the incoming json String userName = jsonAction.getString("userName"); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // derive whether this is the current user boolean currentUser = userName.toLowerCase().equals(rapidRequest.getUserName().toLowerCase()); // now set the rapid request user to the user we want rapidRequest.setUserName(userName); // get the app security SecurityAdapter security = app.getSecurityAdapter(); // get the user User user = security.getUser(rapidRequest); // add the user name result.put("userName", userName); // add the user description result.put("description", user.getDescription()); // set the default password mask String password = "********"; // if the password is blank reflect this in what we send if ("".equals(user.getPassword())) password = ""; // add a masked password result.put("password", password); // add the device details result.put("deviceDetails", user.getDeviceDetails()); // if we got one if (security != null) { // get the users roles List<String> roles = security.getUser(rapidRequest).getRoles(); // add the users to the response result.put("roles", roles); } // got security // if this user record is for the logged in user result.put("currentUser", currentUser); } else if ("GETUSERS".equals(action)) { // get the app security SecurityAdapter security = app.getSecurityAdapter(); // if we got one if (security != null) { // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // get the users Users users = security.getUsers(rapidRequest); // add the users result.put("users", users); // add the current user result.put("currentUser", rapidRequest.getUserName()); } // got security } else if ("GETPARAM".equals(action)) { // retrieve the index int index = jsonAction.getInt("index"); // create the json object JSONObject jsonParameter = new JSONObject(); // check the parameters if (app.getParameters() != null) { // check we have the one requested if (index >= 0 && index < app.getParameters().size()) { // get the parameter Parameter parameter = app.getParameters().get(index); // add the name and value jsonParameter.put("name", parameter.getName()); jsonParameter.put("value", parameter.getValue()); } } // add the parameter to the result result.put("parameter", jsonParameter); } else if ("GETRESOURCE".equals(action)) { // retrieve the index int index = jsonAction.getInt("index"); // create the json object JSONObject jsonParameter = new JSONObject(); // check the resources if (app.getAppResources() != null) { // check we have the one requested if (index >= 0 && index < app.getAppResources().size()) { // get the parameter Resource resource = app.getAppResources().get(index); // add the name and value jsonParameter.put("name", resource.getName()); jsonParameter.put("type", resource.getType()); jsonParameter.put("value", resource.getContent()); } } // add the parameter to the result result.put("resource", jsonParameter); } else if ("GETDEVICE".equals(action)) { // retrieve the index int index = jsonAction.getInt("index"); // create the json object JSONObject jsonDevice = new JSONObject(); // reference to all devices Devices devices = rapidServlet.getDevices(); // check we have devices if (devices != null) { // check the index is ok if (index >= 0 && index < devices.size()) { // get the device Device device = rapidServlet.getDevices().get(index); // add the name and value jsonDevice.put("name", device.getName()); jsonDevice.put("width", device.getWidth()); jsonDevice.put("height", device.getHeight()); jsonDevice.put("ppi", device.getPPI()); jsonDevice.put("scale", device.getScale()); } } // add the parameter to the result result.put("device", jsonDevice); } else if ("GETSESSIONS".equals(action)) { // create the json object JSONObject jsonDetails = new JSONObject(); // create a json array JSONArray jsonSessions = new JSONArray(); // get the sessions Map<String, HttpSession> sessions = RapidSessionListener.getSessions(); // check we got some if (sessions != null) { // get a date formatter SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); // loop them for (String key : sessions.keySet()) { // get the session HttpSession httpSession = sessions.get(key); // create object JSONObject jsonSession = new JSONObject(); // add name jsonSession.put("name", (String) httpSession.getAttribute(RapidFilter.SESSION_VARIABLE_USER_NAME)); // get a new date from the time Date accessTime = new Date(httpSession.getLastAccessedTime()); // add last access jsonSession.put("access", df.format(accessTime)); // add to collections jsonSessions.put(jsonSession); } } // add sessions jsonDetails.put("sessions", jsonSessions); return jsonDetails; } else if ("RELOADACTIONS".equals(action)) { // load actions and set the result message result.put("message", RapidServletContextListener.loadActions(servletContext) + " actions reloaded"); } else if ("RELOADCONTROLS".equals(action)) { // load controls and set the result message result.put("message", RapidServletContextListener.loadControls(servletContext) + " controls reloaded"); } else if ("RELOADAPPLICATIONS".equals(action)) { // load applications and set the result message result.put("message", RapidServletContextListener.loadApplications(servletContext) + " applications reloaded"); } else if ("RELOADADAPTERS".equals(action)) { // load adapters and set the result message int databaseDrivers = 0; int connectionAdapters = 0; int securityAdapters = 0; int forms = 0; int themes = 0; int devices = 0; databaseDrivers = RapidServletContextListener.loadDatabaseDrivers(servletContext); connectionAdapters = RapidServletContextListener.loadConnectionAdapters(servletContext); securityAdapters = RapidServletContextListener.loadSecurityAdapters(servletContext); forms = RapidServletContextListener.loadFormAdapters(servletContext); themes = RapidServletContextListener.loadThemes(servletContext); devices = Devices.load(servletContext).size(); result.put("message", databaseDrivers + " database driver" + (databaseDrivers == 1 ? "" : "s") + ", " + connectionAdapters + " connection adapter" + (connectionAdapters == 1 ? "" : "s") + ", " + securityAdapters + " security adapter" + (securityAdapters == 1 ? "" : "s") + ", " + forms + " form adapter" + (forms == 1 ? "" : "s") + ", " + themes + " theme" + (themes == 1 ? "" : "s") + ", " + devices + " device" + (devices == 1 ? "" : "s") + " reloaded"); } else if ("RELOADVERSION".equals(action)) { // look for an application file in the application folder File applicationFile = new File(app.getConfigFolder(servletContext) + "/application.xml"); // close the existing app app.close(servletContext); // reload the application from file Application reloadedApplication = Application.load(servletContext, applicationFile); // replace it into the applications collection rapidServlet.getApplications().put(reloadedApplication); // load applications and set the result message result.put("message", "Version reloaded"); } else if ("SAVEAPP".equals(action)) { // get the new values String id = Files.safeName(jsonAction.getString("name")).toLowerCase(); String version = Files.safeName(jsonAction.getString("saveVersion")); int status = jsonAction.optInt("status"); String name = jsonAction.getString("name"); String title = jsonAction.getString("title"); String description = jsonAction.getString("description"); String formAdapter = jsonAction.optString("formAdapter"); String startPageId = jsonAction.optString("startPageId", ""); boolean showControlIds = jsonAction.optBoolean("showControlIds"); boolean showActionIds = jsonAction.optBoolean("showActionIds"); // assume we do not need to update the applications drop down boolean appUpdated = false; // if the id or version is now different we need to move it, rebuilding all the resources as we go if (!app.getId().equals(id) || !app.getVersion().equals(version)) { // copy the app to the id/version, returning the new one for saving app = app.copy(rapidServlet, rapidRequest, id, version, true, true); // mark that it has been updated appUpdated = true; } // update the values app.setName(name); app.setStatus(status); app.setTitle(title); app.setDescription(description); app.setFormAdapterType(formAdapter); app.setStartPageId(startPageId); app.setShowControlIds(showControlIds); app.setShowActionIds(showActionIds); // save app.save(rapidServlet, rapidRequest, true); // add the application to the response result.put("message", "Application details saved"); result.put("update", appUpdated); } else if ("SAVESTYLES".equals(action)) { String themeType = jsonAction.getString("themeType"); String styles = jsonAction.getString("styles"); String statusBarColour = jsonAction.optString("statusBarColour"); String statusBarHighlightColour = jsonAction.optString("statusBarHighlightColour"); String statusBarTextColour = jsonAction.optString("statusBarTextColour"); String statusBarIconColour = jsonAction.optString("statusBarIconColour"); app.setThemeType(themeType); app.setStyles(styles); app.setStatusBarColour(statusBarColour); app.setStatusBarHighlightColour(statusBarHighlightColour); app.setStatusBarTextColour(statusBarTextColour); app.setStatusBarIconColour(statusBarIconColour); app.save(rapidServlet, rapidRequest, true); // add the application to the response result.put("message", "Styles saved"); } else if ("SAVEDBCONN".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the database connections List<DatabaseConnection> dbConns = app.getDatabaseConnections(); // remeber whether we found the connection boolean foundConnection = false; // check we have database connections if (dbConns != null) { // check the index we where given will retieve a database connection if (index > -1 && index < dbConns.size()) { // get the database connection DatabaseConnection dbConn = dbConns.get(index); // set the databse connection properties dbConn.setName(jsonAction.getString("name")); dbConn.setDriverClass(jsonAction.getString("driver")); dbConn.setConnectionString(jsonAction.getString("connectionString")); dbConn.setConnectionAdapterClass(jsonAction.getString("connectionAdapter")); dbConn.setUserName(jsonAction.getString("userName")); String password = jsonAction.getString("password"); // only set the password if it's different from the default if (!"********".equals(password)) dbConn.setPassword(password); // reset the dbconn so the adapter is re-initialised with any changes dbConn.reset(); // save the app app.save(rapidServlet, rapidRequest, true); foundConnection = true; // add the application to the response result.put("message", "Database connection saved"); } } if (!foundConnection) result.put("message", "Database connection could not be found"); } else if ("SAVESOASQL".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the webservices List<Webservice> webservices = app.getWebservices(); // remeber whether we found the connection boolean foundWebservice = false; // check we have database connections if (webservices != null) { // check the index we where given will retieve a database connection if (index > -1 && index < webservices.size()) { // get the web service connection Webservice webservice = webservices.get(index); // check the type if (webservice.getClass() == SQLWebservice.class) { // cast to our type SQLWebservice sqlWebservice = (SQLWebservice) webservice; // set the webservice properties sqlWebservice.setName(jsonAction.getString("name").trim()); sqlWebservice.setDatabaseConnectionIndex(jsonAction.getInt("databaseConnectionIndex")); // get the rest of the complex details JSONObject jsonDetails = jsonAction.getJSONObject("details"); // set the sql sqlWebservice.setSQL(jsonDetails.getString("SQL").trim()); // get the json request JSONObject jsonRequestSchmea = jsonDetails.optJSONObject("requestSchema"); // check it if (jsonRequestSchmea != null) { // get the root element JSONObject jsonElement = jsonRequestSchmea.getJSONObject("rootElement"); // get its name String elementName = jsonElement.optString("name").trim(); // create the schema SOASchema requestSchema = new SOASchema(elementName); // get any child elements JSONArray jsonChildElements = jsonElement.optJSONArray("childElements"); // check if (jsonChildElements != null) { // loop for (int i = 0; i < jsonChildElements.length(); i++) { // get child element JSONObject jsonChildElement = jsonChildElements.getJSONObject(i); // get child element name String childElementName = jsonChildElement.getString("name").trim(); // get its data type int childElementDataType = jsonChildElement.optInt("dataType", 1); // add child element to schema (and get a reference) SOASchemaElement soaChildElement = requestSchema .addChildElement(childElementName); // set the data type soaChildElement.setDataType(childElementDataType); // add any restrictions soaChildElement.setRestrictions( getRestrictions(jsonChildElement.optJSONArray("restrictions"))); } } // set the schema property sqlWebservice.setRequestSchema(requestSchema); } // get the json response JSONObject jsonResponseSchema = jsonDetails.optJSONObject("responseSchema"); // check it if (jsonResponseSchema != null) { // get the root element JSONObject jsonElement = jsonResponseSchema.getJSONObject("rootElement"); // get its name String elementName = jsonElement.optString("name"); // get if array boolean isArray = Boolean.parseBoolean(jsonElement.optString("isArray")); // create the schema SOASchema responseSchema = new SOASchema(elementName, isArray); // get any child elements JSONArray jsonChildElements = jsonElement.optJSONArray("childElements"); // check if (jsonChildElements != null) { // loop for (int i = 0; i < jsonChildElements.length(); i++) { // get child element JSONObject jsonChildElement = jsonChildElements.getJSONObject(i); // get child element name String childElementName = jsonChildElement.getString("name").trim(); // get child element field String childElementField = jsonChildElement.optString("field", ""); // get its data type int childElementDataType = jsonChildElement.optInt("dataType", 1); // add child element to schema (and get reference) SOASchemaElement soaChildElement = responseSchema .addChildElement(childElementName); // set field soaChildElement.setField(childElementField); // set data type soaChildElement.setDataType(childElementDataType); // add any restrictions soaChildElement.setRestrictions( getRestrictions(jsonChildElement.optJSONArray("restrictions"))); } } // set the schema property sqlWebservice.setResponseSchema(responseSchema); } // save the app app.save(rapidServlet, rapidRequest, true); foundWebservice = true; // add the application to the response result.put("message", "SQL webservice saved"); } } } if (!foundWebservice) result.put("message", "SQL webservice could not be found"); } else if ("SAVESOAJAVA".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the webservices List<Webservice> webservices = app.getWebservices(); // remeber whether we found the connection boolean foundWebservice = false; // check we have database connections if (webservices != null) { // check the index we where given will retieve a database connection if (index > -1 && index < webservices.size()) { // get the web service connection Webservice webservice = webservices.get(index); // check the type if (webservice.getClass() == JavaWebservice.class) { // cast to our type JavaWebservice javaWebservice = (JavaWebservice) webservice; // set the webservice properties javaWebservice.setName(jsonAction.getString("name").trim()); javaWebservice.setClassName(jsonAction.getString("className").trim()); // save the app app.save(rapidServlet, rapidRequest, true); foundWebservice = true; // add the application to the response result.put("message", "Java webservice saved"); } } } if (!foundWebservice) result.put("message", "Java webservice could not be found"); } else if ("SAVESECURITYADAPT".equals(action)) { String securityAdapter = jsonAction.getString("securityAdapter").trim(); boolean deviceSecurity = jsonAction.optBoolean("deviceSecurity"); boolean noRetainPassword = jsonAction.optBoolean("noRetainPassword"); app.setSecurityAdapterType(securityAdapter); app.setDeviceSecurity(deviceSecurity); app.setNoRetainPassword(noRetainPassword); app.save(rapidServlet, rapidRequest, true); // add the application to the response result.put("message", "Security adapter saved"); } else if ("SAVEACTIONS".equals(action)) { JSONArray jsonActionTypes = jsonAction.getJSONArray("actionTypes"); ArrayList<String> actionTypes = new ArrayList<String>(); for (int i = 0; i < jsonActionTypes.length(); i++) { actionTypes.add(jsonActionTypes.getString(i).trim()); } // make sure some required actions are there if this is the rapid app if ("rapid".equals(appId)) { String[] requiredActionTypes = { "rapid", "ajax", "control", "custom", "dataCopy", "existing", "validation" }; for (String actionType : requiredActionTypes) { if (!actionTypes.contains(actionType)) actionTypes.add(actionType); } } // sort the types Collections.sort(actionTypes); // put the list into the app app.setActionTypes(actionTypes); // save it app.save(rapidServlet, rapidRequest, true); // add the message to the response result.put("message", actionTypes.size() + " actions"); } else if ("SAVECONTROLS".equals(action)) { JSONArray jsonControlTypes = jsonAction.getJSONArray("controlTypes"); ArrayList<String> controlTypes = new ArrayList<String>(); for (int i = 0; i < jsonControlTypes.length(); i++) { controlTypes.add(jsonControlTypes.getString(i).trim()); } // make sure some required controls are there if this is the rapid app if ("rapid".equals(appId)) { String[] requiredControlTypes = { "button", "dataStore", "dropdown", "grid", "image", "input", "page", "table", "tabGroup", "text" }; for (String controlType : requiredControlTypes) { if (!controlTypes.contains(controlType)) controlTypes.add(controlType); } } // sort the types Collections.sort(controlTypes); // add the controls to the app app.setControlTypes(controlTypes); // save app.save(rapidServlet, rapidRequest, true); // add the message to the response result.put("message", controlTypes.size() + " controls"); } else if ("REBUILDPAGES".equals(action)) { // add the application to the response result.put("message", "This feature is not supported"); } else if ("NEWAPP".equals(action)) { // retrieve the inputs from the json String name = jsonAction.getString("name").trim(); String version = jsonAction.getString("newVersion").trim(); String title = jsonAction.optString("title").trim(); String type = jsonAction.optString("type"); String themeType = jsonAction.optString("themeType"); String description = jsonAction.optString("description").trim(); // create a new application with our reusable, private method Application newApp = createApplication(rapidServlet, rapidRequest, name, version, title, type, themeType, description); // set the result message result.put("message", "Application " + app.getTitle() + " created"); // set the result appId result.put("appId", newApp.getId()); // set the result version result.put("version", newApp.getVersion()); } else if ("DELAPP".equals(action)) { // check we have an app if (app != null) { // get the collection of applications and versions Applications applications = rapidServlet.getApplications(); // get all versions of this application Versions versions = applications.getVersions(app.getId()); // get the number of version int versionCount = versions.size(); // make a list of versions ArrayList<String> versionNumbers = new ArrayList<String>(); // loop the versions for (String version : versions.keySet()) { versionNumbers.add(version); } // loop the versionNumbers for (String versionNumber : versionNumbers) { // get this version Application v = applications.get(app.getId(), versionNumber); // delete it v.delete(rapidServlet, rapidActionRequest, true); } // set the result message result.put("message", versionCount + " application version" + (versionCount == 1 ? "" : "s") + " deleted for " + app.getName()); } } else if ("DUPAPP".equals(action)) { String version = jsonAction.getString("newVersion").trim(); String title = jsonAction.optString("title").trim(); String description = jsonAction.optString("description").trim(); // use the application.copy routine (this updates the status and created time) Application dupApp = app.copy(rapidServlet, rapidRequest, app.getId(), version, false, false); // set the new title into the duplicate dupApp.setTitle(title); // set the new description dupApp.setDescription(description); // save the duplicate dupApp.save(rapidServlet, rapidRequest, false); // set the result message result.put("message", "Application " + app.getTitle() + " duplicated"); result.put("id", dupApp.getId()); result.put("version", dupApp.getVersion()); } else if ("NEWVERSION".equals(action)) { // retrieve the inputs from the json String id = jsonAction.getString("appId").trim(); String version = jsonAction.getString("newVersion").trim(); String title = jsonAction.optString("title").trim(); String description = jsonAction.optString("description").trim(); // create a new application with our reusable, private method Application newApp = createApplication(rapidServlet, rapidRequest, id, version, title, "", "", description); // set the result message result.put("message", "Version " + newApp.getVersion() + " created for " + newApp.getTitle()); // set the result appId result.put("appId", newApp.getId()); // set the result version result.put("version", newApp.getVersion()); // set the result message result.put("message", "Application " + app.getTitle() + " duplicated"); result.put("id", newApp.getId()); result.put("version", newApp.getVersion()); } else if ("DELVERSION".equals(action)) { // delete the application version if (app != null) app.delete(rapidServlet, rapidActionRequest, false); // set the result message result.put("message", "Version " + app.getVersion() + " deleted"); } else if ("NEWPAGE".equals(action)) { String id = jsonAction.getString("id").trim(); String name = jsonAction.getString("name").trim(); String title = jsonAction.optString("title").trim(); String description = jsonAction.optString("description").trim(); Page newPage = new Page(); newPage.setId(id); newPage.setName(name); newPage.setTitle(title); newPage.setDescription(description); newPage.setCreatedBy(rapidRequest.getUserName()); newPage.setCreatedDate(new Date()); // save the page to file newPage.save(rapidServlet, rapidActionRequest, app, false); // put the id in the result result.put("id", id); // set the result message result.put("message", "Page " + newPage.getTitle() + " created"); } else if ("DELPAGE".equals(action)) { // get the id String id = jsonAction.getString("id").trim(); // retrieve the page Page delPage = app.getPages().getPage(rapidRequest.getRapidServlet().getServletContext(), id); // delete it if we got one if (delPage != null) delPage.delete(rapidServlet, rapidActionRequest, app); // set the result message result.put("message", "Page " + delPage.getName() + " delete"); } else if ("NEWDBCONN".equals(action)) { // get the database connections List<DatabaseConnection> dbConns = app.getDatabaseConnections(); // instantiate if null if (dbConns == null) dbConns = new ArrayList<DatabaseConnection>(); // make the new database connection DatabaseConnection dbConn = new DatabaseConnection(servletContext, app, jsonAction.getString("name").trim(), jsonAction.getString("driver").trim(), jsonAction.getString("connectionString").trim(), jsonAction.getString("connectionAdapter").trim(), jsonAction.getString("userName").trim(), jsonAction.getString("password")); // add it to the collection dbConns.add(dbConn); // save the app app.save(rapidServlet, rapidRequest, true); // add the application to the response result.put("message", "Database connection added"); } else if ("DELDBCONN".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the database connections List<DatabaseConnection> dbConns = app.getDatabaseConnections(); // remeber whether we found the connection boolean foundConnection = false; // check we have database connections if (dbConns != null) { // check the index we where given will retieve a database connection if (index > -1 && index < dbConns.size()) { // remove the database connection dbConns.remove(index); // save the app try { app.save(rapidServlet, rapidRequest, true); } catch (Exception ex) { throw new JSONException(ex); } // add the application to the response result.put("message", "Database connection deleted"); } } if (!foundConnection) result.put("message", "Database connection could not be found"); } else if ("NEWSOA".equals(action)) { // the webservice we are about to make Webservice webservice = null; // get the type String type = jsonAction.getString("type"); if ("SQLWebservice".equals(type)) { // make the new SQL webservice webservice = new SQLWebservice(jsonAction.getString("name").trim()); } else if ("JavaWebservice".equals(type)) { // make the new Java class webservice webservice = new JavaWebservice(jsonAction.getString("name").trim()); } // if one was made if (webservice != null) { // add it to the collection app.getWebservices().add(webservice); // save the app app.save(rapidServlet, rapidRequest, true); // add the application to the response result.put("message", "SOA webservice added"); } else { // send message result.put("message", "Webservice type not recognised"); } } else if ("DELSOA".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the webservices List<Webservice> webservices = app.getWebservices(); // remeber whether we found the webservice boolean foundWebservice = false; // check we have database connections if (webservices != null) { // check the index we where given will retieve a database connection if (index > -1 && index < webservices.size()) { // remove the database connection webservices.remove(index); // save the app app.save(rapidServlet, rapidRequest, true); // add the application to the response result.put("message", "SOA webservice deleted"); } } if (!foundWebservice) result.put("message", "SOA webservice could not be found"); } else if ("NEWROLE".equals(action)) { // get the role name String roleName = jsonAction.getString("role").trim(); // get the role descrition String description = jsonAction.getString("description").trim(); // add the role app.getSecurityAdapter().addRole(rapidRequest, new Role(roleName, description)); // set the result message result.put("message", "Role added"); } else if ("DELROLE".equals(action)) { // get the role String role = jsonAction.getString("role").trim(); // delete the role app.getSecurityAdapter().deleteRole(rapidRequest, role); // set the result message result.put("message", "Role deleted"); } else if ("NEWUSER".equals(action)) { // get the userName String userName = jsonAction.getString("userName").trim(); // get the userDescription String description = jsonAction.optString("description", "").trim(); // get the password String password = jsonAction.getString("password"); // get the device details String deviceDetails = jsonAction.optString("deviceDetails"); // check for useAdmin boolean useAdmin = jsonAction.optBoolean("useAdmin"); // check for useDesign boolean useDesign = jsonAction.optBoolean("useDesign"); // get the security SecurityAdapter security = app.getSecurityAdapter(); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // add the user security.addUser(rapidRequest, new User(userName, description, password, deviceDetails)); // update the Rapid Request to have the new user name rapidRequest.setUserName(userName); // add role if we were given one if (useAdmin) security.addUserRole(rapidRequest, com.rapid.server.Rapid.ADMIN_ROLE); // add role if we were given one if (useDesign) security.addUserRole(rapidRequest, com.rapid.server.Rapid.DESIGN_ROLE); // set the result message result.put("message", "User added"); } else if ("DELUSER".equals(action)) { // get the userName String userName = jsonAction.getString("userName").trim(); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // override the standard request user rapidRequest.setUserName(userName); // delete the user app.getSecurityAdapter().deleteUser(rapidRequest); // remove any of their page locks app.removeUserPageLocks(servletContext, userName); // set the result message result.put("message", "User deleted"); } else if ("SAVEROLE".equals(action)) { // get the role String roleName = jsonAction.getString("role").trim(); // get the description String roleDescription = jsonAction.getString("description").trim(); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // update the role app.getSecurityAdapter().updateRole(rapidRequest, new Role(roleName, roleDescription)); // set the result message result.put("message", "Role details saved"); } else if ("NEWUSERROLE".equals(action)) { // get the userName String userName = jsonAction.getString("userName").trim(); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // override the standard request user rapidRequest.setUserName(userName); // get the role String role = jsonAction.getString("role").trim(); // add the user role app.getSecurityAdapter().addUserRole(rapidRequest, role); // set the result message result.put("message", "User role added"); } else if ("DELUSERROLE".equals(action)) { // get the userName String userName = jsonAction.getString("userName").trim(); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // override the standard request user rapidRequest.setUserName(userName); // get the role String role = jsonAction.getString("role").trim(); // add the user role app.getSecurityAdapter().deleteUserRole(rapidRequest, role); // set the result message result.put("message", "User role deleted"); } else if ("SAVEUSER".equals(action)) { // get the userName String userName = jsonAction.getString("userName").trim(); // recreate the rapidRequest with the selected app (so app parameters etc are available from the app in the rapidRequest) rapidRequest = new RapidRequest(rapidServlet, rapidRequest.getRequest(), app); // override the standard request user rapidRequest.setUserName(userName); // get the description String description = jsonAction.getString("description").trim(); // get the password String password = jsonAction.getString("password"); // get the device details String deviceDetails = jsonAction.getString("deviceDetails"); // get the security SecurityAdapter security = app.getSecurityAdapter(); // get the user User user = security.getUser(rapidRequest); // update the description user.setDescription(description); // update the password if different from the mask if (!"********".equals(password)) user.setPassword(password); // update the device details user.setDeviceDetails(deviceDetails); // update the user security.updateUser(rapidRequest, user); // if we are updating the rapid application we have used checkboxes for the Rapid Admin and Rapid Designer roles if ("rapid".equals(app.getId())) { // get the valud of rapidAdmin String useAdmin = jsonAction.optString("useAdmin"); // check useAdmin was sent if (useAdmin != null) { // check the user was given the role if ("true".equals(useAdmin)) { // add the role if the user doesn't have it already if (!security.checkUserRole(rapidRequest, com.rapid.server.Rapid.ADMIN_ROLE)) security.addUserRole(rapidRequest, com.rapid.server.Rapid.ADMIN_ROLE); } else { // remove the role security.deleteUserRole(rapidRequest, com.rapid.server.Rapid.ADMIN_ROLE); } } // get the valud of rapidDesign String useDesign = jsonAction.optString("useDesign"); // check useAdmin was sent if (useDesign != null) { // check the user was given the role if ("true".equals(useDesign)) { // add the role if the user doesn't have it already if (!security.checkUserRole(rapidRequest, com.rapid.server.Rapid.DESIGN_ROLE)) security.addUserRole(rapidRequest, com.rapid.server.Rapid.DESIGN_ROLE); } else { // remove the role security.deleteUserRole(rapidRequest, com.rapid.server.Rapid.DESIGN_ROLE); } } } // set the result message result.put("message", "User details saved"); } else if ("NEWPARAM".equals(action)) { // add a new parameter to the collection app.getParameters().add(new Parameter()); } else if ("DELPARAM".equals(action)) { // get the index int index = jsonAction.getInt("index"); // remove the parameter app.getParameters().remove(index); // save the app app.save(rapidServlet, rapidRequest, true); // set the result message result.put("message", "Parameter deleted"); } else if ("SAVEPARAM".equals(action)) { int index = jsonAction.getInt("index"); String name = jsonAction.getString("name"); String value = jsonAction.getString("value"); // fetch the parameter Parameter parameter = app.getParameters().get(index); // update it parameter.setName(name); parameter.setValue(value); // save the app app.save(rapidServlet, rapidRequest, true); // set the result message result.put("message", "Parameter details saved"); } else if ("NEWRESOURCE".equals(action)) { // get the resources Resources resources = app.getAppResources(); // if null (could be from a previous version) if (resources == null) { // instantiate here resources = new Resources(); // assign to the application app.setAppResources(resources); } // add a new parameter to the collection resources.add(new Resource()); } else if ("DELRESOURCE".equals(action)) { // get the index int index = jsonAction.getInt("index"); // remove the parameter app.getAppResources().remove(index); // save the app app.save(rapidServlet, rapidRequest, true); // set the result message result.put("message", "Resource deleted"); } else if ("SAVERESOURCE".equals(action)) { int index = jsonAction.getInt("index"); String name = jsonAction.getString("name"); int type = jsonAction.getInt("type"); String value = jsonAction.getString("value"); // fetch the resource Resource resource = app.getAppResources().get(index); // update it resource.setName(name); resource.setType(type); resource.setContent(value); // save the app app.save(rapidServlet, rapidRequest, true); // set the result message result.put("message", "Resource details saved"); } else if ("NEWDEVICE".equals(action)) { // get the devices Devices devices = rapidServlet.getDevices(); // add a new device to the collection devices.add(new Device("New device", 500, 500, 200, 1d)); // save it devices.save(servletContext); } else if ("DELDEVICE".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the devices Devices devices = rapidServlet.getDevices(); // remove the device devices.remove(index); // save the devices devices.save(servletContext); // set the result message result.put("message", "Device deleted"); } else if ("SAVEDEVICE".equals(action)) { int index = jsonAction.getInt("index"); String name = jsonAction.getString("name"); int width = jsonAction.getInt("width"); int height = jsonAction.getInt("height"); int ppi = jsonAction.getInt("ppi"); double scale = jsonAction.getDouble("scale"); // fetch the devices Devices devices = rapidServlet.getDevices(); // fetch the device Device device = devices.get(index); // update the device device.setName(name); device.setWidth(width); device.setHeight(height); device.setPPI(ppi); device.setScale(scale); // save the devices devices.save(servletContext); // set the result message result.put("message", "Device details saved"); } else if ("TESTDBCONN".equals(action)) { // get the index int index = jsonAction.getInt("index"); // get the database connections List<DatabaseConnection> dbConns = app.getDatabaseConnections(); // remeber whether we found the connection boolean foundConnection = false; // check we have database connections if (dbConns != null) { // check the index we where given will retieve a database connection if (index > -1 && index < dbConns.size()) { // retrieve the details from the json String driverClass = jsonAction.getString("driver").trim(); String connectionString = app.insertParameters(servletContext, jsonAction.getString("connectionString").trim()); String connectionAdapterClass = jsonAction.getString("connectionAdapter").trim(); String userName = jsonAction.getString("userName").trim(); String password = jsonAction.getString("password"); // if the password wasn't set retrieve it via the connection index if ("********".equals(password)) password = dbConns.get(index).getPassword(); // instantiate a DatabaseConnection object for this test DatabaseConnection dbconnection = new DatabaseConnection(servletContext, app, "test", driverClass, connectionString, connectionAdapterClass, userName, password); // get the adapter ConnectionAdapter connectionAdapter = dbconnection.getConnectionAdapter(servletContext, app); // get a data factory DataFactory dataFactory = new DataFactory(connectionAdapter); // get a connection Connection connection = dataFactory.getConnection(rapidRequest); // close it dataFactory.close(); // add the application to the response result.put("message", "Database connection OK"); // retain that a connection was found foundConnection = true; } } if (!foundConnection) result.put("message", "Database connection could not be found"); } else if ("DELAPPBACKUP".equals(action)) { // get the id String backupId = jsonAction.getString("backupId"); // get the folder into a file object File backup = new File(app.getBackupFolder(servletContext, false) + "/" + backupId); // delete it Files.deleteRecurring(backup); // set the result message result.put("message", "Application backup " + appId + "/" + appVersion + "/" + backupId + " deleted"); // pass back a control id from in the dialogue with which to close it result.put("controlId", "#rapid_P12_C13_"); } else if ("DELPAGEBACKUP".equals(action)) { // get the id String backupId = jsonAction.getString("backupId"); // get the folder into a file object File backup = new File(app.getBackupFolder(servletContext, false) + "/" + backupId); // delete it Files.deleteRecurring(backup); // set the result message result.put("message", "Page backup " + appId + "/" + backupId + " deleted"); // pass back a control id from in the dialogue with which to close it result.put("controlId", "#rapid_P13_C13_"); } else if ("RESTOREAPPBACKUP".equals(action)) { // get the id String backupId = jsonAction.getString("backupId"); // get this backup folder File backupFolder = new File(app.getBackupFolder(servletContext, false) + "/" + backupId); // check it exists if (backupFolder.exists()) { // back up the current state of the application app.backup(rapidServlet, rapidRequest, false); // get the config folder File configFolder = new File(app.getConfigFolder(servletContext)); // get the web folder File webFolder = new File(app.getWebFolder(servletContext)); // get the backups folder File backupsFolder = new File(app.getBackupFolder(servletContext, false)); // create a file object for restoring the config folder File configRestoreFolder = new File( Application.getConfigFolder(servletContext, app.getId(), "_restore")); List<String> ignoreList = new ArrayList<String>(); ignoreList.add("WebContent"); // copy the backup into the application restore folder Files.copyFolder(backupFolder, configRestoreFolder, ignoreList); // create a file object for the web content backup folder (which is currently sitting under the application) File webBackupFolder = new File(backupFolder + "/WebContent"); // create a file object for the web content restore folder File webRestoreFolder = new File( Application.getWebFolder(servletContext, app.getId(), "_restore")); // copy the web contents backup folder to the webcontent restore folder Files.copyFolder(webBackupFolder, webRestoreFolder); // get the backups destination folder File backupsRestoreFolder = new File( Application.getBackupFolder(servletContext, app.getId(), "_restore", false)); // copy in the backups Files.copyFolder(backupsFolder, backupsRestoreFolder); // delete the application config folder (this removes the webcontent and backups too so we do it here) Files.deleteRecurring(configFolder); // rename the restore folder to the application folder configRestoreFolder.renameTo(configFolder); // delete the webcontent folder Files.deleteRecurring(webFolder); // rename the restore folder to the webconten folder webRestoreFolder.renameTo(webFolder); // get the application file File applicationFile = new File(configFolder + "/application.xml"); // reload the application app = Application.load(servletContext, applicationFile); // add it back to the collection rapidServlet.getApplications().put(app); // set the result message result.put("message", "Application " + backupId + " restored"); // pass back a control id from in the dialogue with which to close it result.put("controlId", "#rapid_P14_C13_"); } else { // set the result message result.put("message", "Application backup " + backupId + " not found"); } } else if ("RESTOREPAGEBACKUP".equals(action)) { // get the id String backupId = jsonAction.getString("backupId"); // turn the id into parts String[] idParts = backupId.split("_"); // start the page name String pageName = idParts[0]; // loop the remaining parts and build for (int i = 1; i < idParts.length - 3; i++) { pageName += "_" + idParts[i]; } // get the page Page page = app.getPages().getPageByName(servletContext, pageName); // create a file object for the page File pageFile = new File(page.getFile(servletContext, app)); // create a backup for the current state page.backup(rapidServlet, rapidRequest, app, pageFile, false); // get this backup file File backupFile = new File(app.getBackupFolder(servletContext, false) + "/" + backupId); // copy it over the current page file Files.copyFile(backupFile, pageFile); // load the page from the backup page = Page.load(servletContext, backupFile); // replace the current entry app.getPages().addPage(page, pageFile); // set the result message result.put("message", "Page backup " + appId + "/" + backupId + " restored"); // pass back a control id from in the dialogue with which to close it result.put("controlId", "#rapid_P15_C13_"); } else if ("SAVEAPPBACKUPSIZE".equals(action)) { // get the max backup size int backupMaxSize = jsonAction.getInt("backupMaxSize"); // pass it to the application app.setApplicationBackupMaxSize(backupMaxSize); // save the application app.save(rapidServlet, rapidRequest, false); // set the result message result.put("message", "Application backup max size updated to " + backupMaxSize); } else if ("SAVEPAGEBACKUPSIZE".equals(action)) { // get the max backup size int backupMaxSize = jsonAction.getInt("backupMaxSize"); // pass it to the application app.setPageBackupsMaxSize(backupMaxSize); // save the application app.save(rapidServlet, rapidRequest, false); // set the result message result.put("message", "Page backup max size updated to " + backupMaxSize); } // sent back the new app id for the callback load if (newAppId != null) result.put("id", newAppId); } else { // send back an error result.put("error", "Application not found"); } return result; }
From source file:org.pentaho.platform.dataaccess.metadata.service.MetadataServiceUtil.java
/** * Returns a CDA JSON representation of a query result set * * @param resultSet/*w w w . ja v a 2 s . co m*/ * @return * @throws JSONException */ public String createCdaJson(final IPentahoResultSet resultSet, String locale) throws JSONException { if (resultSet == null) { return null; } JSONObject json = new JSONObject(); // Generate the metadata final JSONArray metadataArray = new JSONArray(); final int columnCount = resultSet.getColumnCount(); final int rowCount = resultSet.getRowCount(); for (int i = 0; i < columnCount; i++) { JSONObject info = new JSONObject(); info.put("colIndex", i); //$NON-NLS-1$ info.put("colName", resultSet.getMetaData().getColumnHeaders()[0][i]); //$NON-NLS-1$ DataType type = (DataType) resultSet.getMetaData().getAttribute(0, i, IPhysicalColumn.DATATYPE_PROPERTY); info.put("colType", type.getName().toUpperCase()); //$NON-NLS-1$ LocalizedString name = (LocalizedString) resultSet.getMetaData().getAttribute(0, i, Concept.NAME_PROPERTY); if (name != null && locale != null) { info.put("colLabel", name.getString(locale)); //$NON-NLS-1$ } metadataArray.put(info); } json.put("metadata", metadataArray); //$NON-NLS-1$ // add the rows of data final JSONArray valuesArray = new JSONArray(); for (int rowIdx = 0; rowIdx < rowCount; rowIdx++) { final JSONArray rowArray = new JSONArray(); valuesArray.put(rowArray); for (int colIdx = 0; colIdx < columnCount; colIdx++) { rowArray.put(resultSet.getValueAt(rowIdx, colIdx)); } } json.put("resultset", valuesArray); //$NON-NLS-1$ return json.toString(); }
From source file:org.ohmage.request.mobility.MobilityReadRequest.java
/** * Responds to the request.//ww w .j av a 2s. c o m */ @Override public void respond(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { LOGGER.info("Responding to the Mobiltiy read request."); if (isFailed()) { super.respond(httpRequest, httpResponse, null); } else if (regularReadRequest.isFailed()) { regularReadRequest.respond(httpRequest, httpResponse); } else if (extendedReadRequest.isFailed()) { extendedReadRequest.respond(httpRequest, httpResponse); } JSONObject resultObject = new JSONObject(); try { JSONArray resultArray = new JSONArray(); long startDateMillis = startDate.getMillis(); for (MobilityPoint mobilityPoint : points) { if ((mobilityPoint.getTime() + mobilityPoint.getTimezone().getOffset(mobilityPoint.getTime())) >= startDateMillis) { resultArray.put(mobilityPoint.toJson(true, columns)); } } resultObject.put(JSON_KEY_DATA, resultArray); } catch (JSONException e) { LOGGER.error("Error creating the JSONObject.", e); setFailed(); } catch (DomainException e) { LOGGER.error("Error creating the JSONObject.", e); setFailed(); } super.respond(httpRequest, httpResponse, resultObject); }