From 400c1b43e78ba807cbfa6aecb23d61262e5905ec Mon Sep 17 00:00:00 2001 From: Sonia Zorba Date: Mon, 4 Jan 2016 15:45:46 +0100 Subject: [PATCH] Changes on pages navigation and session --- new/pom.xml | 40 ++++- .../it/inaf/oats/ia2/tap/tsm/TSMPages.java | 12 ++ .../it/inaf/oats/ia2/tap/tsm/TSMServlet.java | 160 ++++++++++++++++++ .../ia2/tap/tsm/datalayer/TapSchemaDL.java | 1 + .../ia2/tap/tsm/ejb/ApplicationManager.java | 80 +++++++++ .../tap/tsm/ejb/ApplicationManagerLocal.java | 30 ++++ .../oats/ia2/tap/tsm/model/Credentials.java | 12 +- .../tap/tsm/model/InsertCredentialsModel.java | 43 +++++ .../SelectTapSchemaModel.java} | 21 +-- .../tap/tsm/pageutil/InsertCredentials.java | 83 --------- .../ia2/tap/tsm/rest/ApplicationConfig.java | 12 +- ...Model.java => EditTapSchemaPageModel.java} | 4 +- .../tap/tsm/rest/EditTapSchemaPageState.java | 39 +++++ .../ia2/tap/tsm/rest/SchemaPageState.java | 63 ------- .../ia2/tap/tsm/rest/TapSchemaResource.java | 82 ++++----- new/src/main/webapp/WEB-INF/beans.xml | 5 + new/src/main/webapp/WEB-INF/web.xml | 24 --- new/src/main/webapp/credentials.jsp | 70 ++++++++ new/src/main/webapp/editTapSchema.jsp | 15 +- new/src/main/webapp/index.jsp | 89 +--------- new/src/main/webapp/js/edit-tapschema.js | 4 +- new/src/main/webapp/js/select-tapschema.js | 22 ++- new/src/main/webapp/selectTapSchema.jsp | 24 +-- new/src/test/java/TestUtils.java | 6 +- 24 files changed, 586 insertions(+), 355 deletions(-) create mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMPages.java create mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMServlet.java create mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManager.java create mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManagerLocal.java create mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/InsertCredentialsModel.java rename new/src/main/java/it/inaf/oats/ia2/tap/tsm/{pageutil/SelectTapSchema.java => model/SelectTapSchemaModel.java} (69%) delete mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/InsertCredentials.java rename new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/{PageModel.java => EditTapSchemaPageModel.java} (98%) create mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageState.java delete mode 100644 new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/SchemaPageState.java create mode 100644 new/src/main/webapp/WEB-INF/beans.xml delete mode 100644 new/src/main/webapp/WEB-INF/web.xml create mode 100644 new/src/main/webapp/credentials.jsp diff --git a/new/pom.xml b/new/pom.xml index 8046c70..6ea43bc 100644 --- a/new/pom.xml +++ b/new/pom.xml @@ -12,9 +12,27 @@ ${project.build.directory}/endorsed UTF-8 - + + + + + + org.glassfish.jersey + jersey-bom + 2.6 + pom + import + + + + + javax + javaee-web-api + 6.0 + provided + mysql mysql-connector-java @@ -22,17 +40,25 @@ jar runtime + + org.glassfish.jersey.containers + jersey-container-servlet + provided + + + org.glassfish.jersey.ext + jersey-mvc-jsp + + + + org.glassfish.jersey.media + jersey-media-moxy + com.google.code.gson gson 2.5 - - javax - javaee-web-api - 7.0 - provided - com.flipkart.zjsonpatch zjsonpatch diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMPages.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMPages.java new file mode 100644 index 0000000..876d6a0 --- /dev/null +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMPages.java @@ -0,0 +1,12 @@ +package it.inaf.oats.ia2.tap.tsm; + +/** + * + * @author Sonia Zorba + */ +public interface TSMPages { + + String CREDENTIALS = "credentials"; + String SELECT_SCHEMA = "selectTapSchema"; + String EDIT_SCHEMA = "editTapSchema"; +} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMServlet.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMServlet.java new file mode 100644 index 0000000..0199973 --- /dev/null +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/TSMServlet.java @@ -0,0 +1,160 @@ +package it.inaf.oats.ia2.tap.tsm; + +import it.inaf.oats.ia2.tap.tsm.ejb.ApplicationManagerLocal; +import it.inaf.oats.ia2.tap.tsm.model.Credentials; +import it.inaf.oats.ia2.tap.tsm.model.InsertCredentialsModel; +import it.inaf.oats.ia2.tap.tsm.model.SelectTapSchemaModel; +import it.inaf.oats.ia2.tap.tsm.model.TapSchema; +import it.inaf.oats.ia2.tap.tsm.rest.EditTapSchemaPageState; +import java.io.IOException; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import javax.ejb.EJB; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author Sonia Zorba + */ +@WebServlet(name = "TSMServlet", urlPatterns = {"/" + TSMPages.CREDENTIALS, "/" + TSMPages.SELECT_SCHEMA, "/" + TSMPages.EDIT_SCHEMA}) +public class TSMServlet extends HttpServlet { + + @EJB + private ApplicationManagerLocal applicationManager; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String path = request.getRequestURI().substring(request.getContextPath().length()); + + if (!applicationManager.isLoggedIn() && !path.startsWith("/" + TSMPages.CREDENTIALS)) { + response.sendRedirect(TSMPages.CREDENTIALS); + } else { + if (path.startsWith("/" + TSMPages.CREDENTIALS)) { + applicationManager.setCurrentPage(TSMPages.CREDENTIALS); + showCredentialForm(request, response, new InsertCredentialsModel(applicationManager.getCredentials())); + } else if (path.startsWith("/" + TSMPages.SELECT_SCHEMA)) { + applicationManager.setCurrentPage(TSMPages.SELECT_SCHEMA); + request.setAttribute("model", applicationManager.getSelectTapSchema()); + request.getRequestDispatcher("/" + TSMPages.SELECT_SCHEMA + ".jsp").forward(request, response); + } else if (path.startsWith("/" + TSMPages.EDIT_SCHEMA)) { + applicationManager.setCurrentPage(TSMPages.EDIT_SCHEMA); + request.setAttribute("tapSchemaName", applicationManager.getEditTapSchemaPageState().getTapSchema().getName()); + request.getRequestDispatcher("/" + TSMPages.EDIT_SCHEMA + ".jsp").forward(request, response); + } + } + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String path = request.getRequestURI().substring(request.getContextPath().length()); + + if (path.startsWith("/" + TSMPages.CREDENTIALS)) { + processInsertCredentials(request, response); + } else if (path.startsWith("/" + TSMPages.SELECT_SCHEMA)) { + Connection connection = null; + try { + connection = applicationManager.getCredentials().getConnection(); + + TapSchema tapSchema; + if (request.getParameter("tapschemaRadioGroup").equals("create")) { + String tapSchemaName = request.getParameter("tapschemaName"); + ArrayList selectedSchemas = new ArrayList(); + String[] selectedSchemasParam = request.getParameterValues("selectedSchemas"); + if (selectedSchemasParam != null) { + selectedSchemas.addAll(Arrays.asList(selectedSchemasParam)); + } + tapSchema = new TapSchema(connection, tapSchemaName, selectedSchemas); + } else { + String tapSchemaName = request.getParameter("tapschemaDropDownChoice"); + tapSchema = new TapSchema(connection, tapSchemaName); + } + + applicationManager.setEditTapSchemaPageState(new EditTapSchemaPageState(tapSchema)); + response.sendRedirect(TSMPages.EDIT_SCHEMA); + } catch (SQLException e) { + e.printStackTrace(System.err); + } finally { + try { + if (connection != null) { + connection.close(); + } + } catch (SQLException e) { + e.printStackTrace(System.err); + } + } + } + } + + private void showCredentialForm(HttpServletRequest request, HttpServletResponse response, InsertCredentialsModel insertCredentialsModel) + throws ServletException, IOException { + request.setAttribute("insertCredentials", insertCredentialsModel); + request.getRequestDispatcher("/" + TSMPages.CREDENTIALS + ".jsp").forward(request, response); + } + + private void processInsertCredentials(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String hostname = request.getParameter("hostname"); + String portStr = request.getParameter("port"); + String username = request.getParameter("username"); + String password = request.getParameter("password"); + + Credentials credentials = applicationManager.getCredentials(); + InsertCredentialsModel insertCredentialsModel = new InsertCredentialsModel(credentials); + + if (hostname != null || portStr != null || username != null) { + if (hostname == null || hostname.equals("")) { + insertCredentialsModel.addError("hostname can't be empty"); + } else { + credentials.setHostname(hostname); + } + + if (portStr == null || portStr.equals("")) { + insertCredentialsModel.addError("port can't be empty"); + } + int port; + try { + port = Integer.parseInt(portStr); + credentials.setPort(port); + } catch (NumberFormatException e) { + insertCredentialsModel.addError("invalid port value"); + } + + if (username == null || username.equals("")) { + insertCredentialsModel.addError("username can't be empty!"); + } else { + credentials.setUsername(username); + } + + if (password == null) { + password = ""; + } + credentials.setPassword(password); + } + + if (insertCredentialsModel.getFormErrors().isEmpty()) { + try { + SelectTapSchemaModel selectTapSchema = new SelectTapSchemaModel(credentials.getConnection()); + applicationManager.setSelectTapSchemaModel(selectTapSchema); + request.getSession().setAttribute("applicationManager", applicationManager); + response.sendRedirect(TSMPages.SELECT_SCHEMA); + } catch (SQLException e) { + insertCredentialsModel.addError("Connection error: " + e.getMessage()); + } + } + + if (!applicationManager.isLoggedIn()) { + showCredentialForm(request, response, insertCredentialsModel); + } + } +} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/datalayer/TapSchemaDL.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/datalayer/TapSchemaDL.java index a1c6e77..541f329 100644 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/datalayer/TapSchemaDL.java +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/datalayer/TapSchemaDL.java @@ -1,5 +1,6 @@ package it.inaf.oats.ia2.tap.tsm.datalayer; +import it.inaf.oats.ia2.tap.tsm.model.Credentials; import it.inaf.oats.ia2.tap.tsm.model.*; import java.sql.Connection; import java.sql.ResultSet; diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManager.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManager.java new file mode 100644 index 0000000..a32b2d5 --- /dev/null +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManager.java @@ -0,0 +1,80 @@ +package it.inaf.oats.ia2.tap.tsm.ejb; + +import it.inaf.oats.ia2.tap.tsm.TSMPages; +import it.inaf.oats.ia2.tap.tsm.model.Credentials; +import it.inaf.oats.ia2.tap.tsm.model.SelectTapSchemaModel; +import it.inaf.oats.ia2.tap.tsm.rest.EditTapSchemaPageState; +import javax.annotation.PostConstruct; +import javax.ejb.Stateful; + +/** + * + * @author Sonia Zorba + */ +@Stateful +public class ApplicationManager implements ApplicationManagerLocal { + + String currentPage; + + private boolean isLoggedIn; + + private Credentials credentials; + private SelectTapSchemaModel selectTapSchemaModel; + private EditTapSchemaPageState editTapSchemaPageState; + + @PostConstruct + public void init() { + credentials = new Credentials(); + currentPage = TSMPages.CREDENTIALS; + isLoggedIn = false; + selectTapSchemaModel = null; + editTapSchemaPageState = null; + } + + @Override + public boolean isLoggedIn() { + return isLoggedIn; + } + + @Override + public Credentials getCredentials() { + return this.credentials; + } + + @Override + public SelectTapSchemaModel getSelectTapSchema() { + return this.selectTapSchemaModel; + } + + @Override + public void setSelectTapSchemaModel(SelectTapSchemaModel selectTapSchemaModel) { + this.selectTapSchemaModel = selectTapSchemaModel; + this.isLoggedIn = true; + } + + @Override + public EditTapSchemaPageState getEditTapSchemaPageState() { + return this.editTapSchemaPageState; + } + + @Override + public void setEditTapSchemaPageState(EditTapSchemaPageState editTapSchemaPageState) { + this.editTapSchemaPageState = editTapSchemaPageState; + } + + @Override + public String getCurrentPage() { + return this.currentPage; + } + + @Override + public void setCurrentPage(String pageName) { + this.currentPage = pageName; + + if (currentPage.equals(TSMPages.CREDENTIALS)) { + init(); + } else if (currentPage.equals(TSMPages.SELECT_SCHEMA)) { + editTapSchemaPageState = null; + } + } +} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManagerLocal.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManagerLocal.java new file mode 100644 index 0000000..ad10da9 --- /dev/null +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/ejb/ApplicationManagerLocal.java @@ -0,0 +1,30 @@ +package it.inaf.oats.ia2.tap.tsm.ejb; + +import it.inaf.oats.ia2.tap.tsm.model.Credentials; +import it.inaf.oats.ia2.tap.tsm.model.SelectTapSchemaModel; +import it.inaf.oats.ia2.tap.tsm.rest.EditTapSchemaPageState; +import javax.ejb.Local; + +/** + * + * @author Sonia Zorba + */ +@Local +public interface ApplicationManagerLocal { + + Credentials getCredentials(); + + boolean isLoggedIn(); + + String getCurrentPage(); + + void setCurrentPage(String pageName); + + SelectTapSchemaModel getSelectTapSchema(); + + void setSelectTapSchemaModel(SelectTapSchemaModel selectTapSchemaModel); + + EditTapSchemaPageState getEditTapSchemaPageState(); + + void setEditTapSchemaPageState(EditTapSchemaPageState editTapSchemaPageState); +} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/Credentials.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/Credentials.java index 6f2a365..d63b956 100644 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/Credentials.java +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/Credentials.java @@ -1,6 +1,5 @@ package it.inaf.oats.ia2.tap.tsm.model; -import java.io.Serializable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -9,7 +8,7 @@ import java.sql.SQLException; * * @author Sonia Zorba */ -public class Credentials implements Serializable { +public class Credentials { private String hostname; private int port; @@ -17,16 +16,11 @@ public class Credentials implements Serializable { private String password; public Credentials() { + super(); + System.out.println("Credentials created"); this.port = 3306; } - public Credentials(String hostname, int port, String username, String password) { - this.hostname = hostname; - this.port = port; - this.username = username; - this.password = password; - } - public String getHostname() { return this.hostname; } diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/InsertCredentialsModel.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/InsertCredentialsModel.java new file mode 100644 index 0000000..5f8e16c --- /dev/null +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/InsertCredentialsModel.java @@ -0,0 +1,43 @@ +package it.inaf.oats.ia2.tap.tsm.model; + +import it.inaf.oats.ia2.tap.tsm.model.Credentials; +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author Sonia Zorba + */ +public class InsertCredentialsModel { + + private final Credentials credentials; + private final List formErrors; + + public InsertCredentialsModel(Credentials credentials) { + this.credentials = credentials; + this.formErrors = new ArrayList(); + } + + public Credentials getCredentials() { + return this.credentials; + } + + public void addError(String error) { + this.formErrors.add(error); + } + + public List getFormErrors() { + return formErrors; + } + + public String getPortStr() { + return this.credentials.getPort() + ""; + } + + public void setPortStr(String portStr) { + try { + this.credentials.setPort(Integer.parseInt(portStr)); + } catch (NumberFormatException e) { + } + } +} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/SelectTapSchema.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/SelectTapSchemaModel.java similarity index 69% rename from new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/SelectTapSchema.java rename to new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/SelectTapSchemaModel.java index fe08cc5..2e28ab0 100644 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/SelectTapSchema.java +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/model/SelectTapSchemaModel.java @@ -1,4 +1,4 @@ -package it.inaf.oats.ia2.tap.tsm.pageutil; +package it.inaf.oats.ia2.tap.tsm.model; import it.inaf.oats.ia2.tap.tsm.datalayer.TapSchemaDL; import java.sql.Connection; @@ -9,27 +9,28 @@ import java.util.List; * * @author Sonia Zorba */ -public class SelectTapSchema { +public class SelectTapSchemaModel { private final List allTAPSchemas; private final List allSchemas; private String exposedSchemas = ""; - public SelectTapSchema(Connection connection) throws SQLException { + public SelectTapSchemaModel(Connection connection) throws SQLException { allSchemas = TapSchemaDL.getAllSchemasNames(connection); allTAPSchemas = TapSchemaDL.getAllTAPSchemasNames(connection, allSchemas); if (!allTAPSchemas.isEmpty()) { - loadExposedSchemas(connection, 0); + loadExposedSchemas(connection, allTAPSchemas.get(0)); } - //connection.close(); + connection.close(); } - public final void loadExposedSchemas(Connection connection, int index) throws SQLException { - List schemas = TapSchemaDL.getExposedSchemas(connection, allTAPSchemas.get(index)); - for(int i=0; i schemas = TapSchemaDL.getExposedSchemas(connection, tapSchemaName); + exposedSchemas = ""; + for (int i = 0; i < schemas.size(); i++) { exposedSchemas += schemas.get(i); - if(i < schemas.size() -1) { + if (i < schemas.size() - 1) { exposedSchemas += ", "; } } @@ -42,7 +43,7 @@ public class SelectTapSchema { public List getAllTAPSchemas() { return allTAPSchemas; } - + public String getExposedSchemas() { return exposedSchemas; } diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/InsertCredentials.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/InsertCredentials.java deleted file mode 100644 index 26c18bc..0000000 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/pageutil/InsertCredentials.java +++ /dev/null @@ -1,83 +0,0 @@ -package it.inaf.oats.ia2.tap.tsm.pageutil; - -import it.inaf.oats.ia2.tap.tsm.model.Credentials; -import java.io.IOException; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * - * @author Sonia Zorba - */ -public class InsertCredentials { - - private final List errors; - private Credentials credentials; - - public InsertCredentials() { - errors = new ArrayList(); - } - - public void load(HttpServletRequest request, HttpServletResponse response) throws IOException { - String hostname = request.getParameter("hostname"); - String portStr = request.getParameter("port"); - String username = request.getParameter("username"); - String password = request.getParameter("password"); - - credentials = new Credentials(); - - errors.clear(); - - if (hostname != null || portStr != null || username != null) { - if (hostname == null || hostname.equals("")) { - errors.add("hostname can't be empty"); - } else { - credentials.setHostname(hostname); - } - - if (portStr == null || portStr.equals("")) { - errors.add("port can't be empty"); - } - int port; - try { - port = Integer.parseInt(portStr); - credentials.setPort(port); - } catch (NumberFormatException e) { - errors.add("invalid port value"); - } - - if (username == null || username.equals("")) { - errors.add("Username can't be empty!"); - } else { - credentials.setUsername(username); - } - - if (password == null) { - password = ""; - } - credentials.setPassword(password); - - if (errors.isEmpty()) { - try { - SelectTapSchema selectTapSchema = new SelectTapSchema(credentials.getConnection()); - request.getSession().setAttribute("SELECT_TAP_SCHEMA", selectTapSchema); - response.sendRedirect("selectTapSchema.jsp"); - } catch (SQLException e) { - errors.add("Connection error: " + e.getMessage()); - } - } - } - } - - public List getErrors() { - return errors; - } - - public Credentials getCredentials() { - return credentials; - } -} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/ApplicationConfig.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/ApplicationConfig.java index 89a2767..1aa283d 100644 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/ApplicationConfig.java +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/ApplicationConfig.java @@ -8,24 +8,24 @@ import javax.ws.rs.core.Application; * * @author Sonia Zorba */ -@javax.ws.rs.ApplicationPath("webresources") +@javax.ws.rs.ApplicationPath("/rest") public class ApplicationConfig extends Application { @Override public Set> getClasses() { Set> resources = new HashSet>(); + //resources.add(org.glassfish.jersey.server.mvc.jsp.JspMvcFeature.class); addRestResourceClasses(resources); return resources; } /** - * Do not modify addRestResourceClasses() method. - * It is automatically populated with - * all resources defined in the project. - * If required, comment out calling this method in getClasses(). + * Do not modify addRestResourceClasses() method. It is automatically + * populated with all resources defined in the project. If required, comment + * out calling this method in getClasses(). */ private void addRestResourceClasses(Set> resources) { resources.add(it.inaf.oats.ia2.tap.tsm.rest.TapSchemaResource.class); } - + } diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/PageModel.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageModel.java similarity index 98% rename from new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/PageModel.java rename to new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageModel.java index 6fba311..81f9b18 100644 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/PageModel.java +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageModel.java @@ -16,7 +16,7 @@ import java.util.Map; * * @author Sonia Zorba */ -public class PageModel { +public class EditTapSchemaPageModel { class Entity { @@ -114,7 +114,7 @@ public class PageModel { List tables; List columns; - public PageModel(TapSchema tapSchema) { + public EditTapSchemaPageModel(TapSchema tapSchema) { Schema selectedSchema = tapSchema.getSelectedSchema(); Table selectedTable = tapSchema.getSelectedTable(); diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageState.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageState.java new file mode 100644 index 0000000..8a0ae37 --- /dev/null +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/EditTapSchemaPageState.java @@ -0,0 +1,39 @@ +package it.inaf.oats.ia2.tap.tsm.rest; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import it.inaf.oats.ia2.tap.tsm.model.TapSchema; + +/** + * + * @author Sonia Zorba + */ +public class EditTapSchemaPageState { + + private static final Gson NULLABLE_GSON = new GsonBuilder().serializeNulls().create(); + + private final TapSchema tapSchema; + private EditTapSchemaPageModel previousModel; + private final SearchUCDDialog searchUCDDialog; + + public EditTapSchemaPageState(TapSchema tapSchema) { + this.tapSchema = tapSchema; + this.searchUCDDialog = new SearchUCDDialog(); + } + + public void setPreviousModel(EditTapSchemaPageModel pageModel) { + this.previousModel = pageModel; + } + + public EditTapSchemaPageModel getPreviousModel() { + return previousModel; + } + + public TapSchema getTapSchema() { + return tapSchema; + } + + public SearchUCDDialog getSearchUCDDialog() { + return searchUCDDialog; + } +} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/SchemaPageState.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/SchemaPageState.java deleted file mode 100644 index ad83e98..0000000 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/SchemaPageState.java +++ /dev/null @@ -1,63 +0,0 @@ -package it.inaf.oats.ia2.tap.tsm.rest; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import it.inaf.oats.ia2.tap.tsm.model.TapSchema; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * - * @author Sonia Zorba - */ -public class SchemaPageState { - - private static final Gson NULLABLE_GSON = new GsonBuilder().serializeNulls().create(); - - private final TapSchema tapSchema; - private PageModel previousModel; - //private final Map previousModels; - private final SearchUCDDialog searchUCDDialog; - - public SchemaPageState(TapSchema tapSchema) { - this.tapSchema = tapSchema; - //this.previousModels = new HashMap(); - this.searchUCDDialog = new SearchUCDDialog(); - } - - public void setPreviousModel(PageModel pageModel) { - this.previousModel = pageModel; - } - - public PageModel getPreviousModel() { - return previousModel; - } - -// public Map getModelsChanged(Map newModels, List excluded) { -// Map modelsChanged = new HashMap(); -// -// for (String modelName : newModels.keySet()) { -// Object newModel = newModels.get(modelName); -// String newModelJson = NULLABLE_GSON.toJson(newModel); -// String oldModelJson = previousModels.get(modelName); -// -// if (oldModelJson == null || !oldModelJson.equals(newModelJson)) { -// previousModels.put(modelName, newModelJson); -// if (excluded == null || !excluded.contains(modelName)) { -// modelsChanged.put(modelName, newModel); -// } -// } -// } -// -// return modelsChanged; -// } - - public TapSchema getTapSchema() { - return tapSchema; - } - - public SearchUCDDialog getSearchUCDDialog() { - return searchUCDDialog; - } -} diff --git a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/TapSchemaResource.java b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/TapSchemaResource.java index fc14c50..cb2be34 100644 --- a/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/TapSchemaResource.java +++ b/new/src/main/java/it/inaf/oats/ia2/tap/tsm/rest/TapSchemaResource.java @@ -7,9 +7,11 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import it.inaf.oats.ia2.tap.tsm.datalayer.ConnectionManager; import it.inaf.oats.ia2.tap.tsm.datalayer.UpdateManager; +import it.inaf.oats.ia2.tap.tsm.ejb.ApplicationManagerLocal; import it.inaf.oats.ia2.tap.tsm.model.Credentials; import it.inaf.oats.ia2.tap.tsm.model.DbEntity; import it.inaf.oats.ia2.tap.tsm.model.IDbEntitiesContainer; +import it.inaf.oats.ia2.tap.tsm.model.SelectTapSchemaModel; import it.inaf.oats.ia2.tap.tsm.model.Status; import it.inaf.oats.ia2.tap.tsm.model.TapSchema; import java.io.IOException; @@ -23,7 +25,6 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import javax.ws.rs.FormParam; import javax.ws.rs.POST; @@ -35,8 +36,6 @@ import javax.ws.rs.POST; @Path("tapschema") public class TapSchemaResource { - private static final String PAGE_STATE = "pageState"; - // containers/entity names private static final String TAP_SCHEMA = "tapSchema"; private static final String SCHEMA = "schema"; @@ -50,47 +49,30 @@ public class TapSchemaResource { @Context private HttpServletRequest request; - private final Credentials credentials = new Credentials("localhost", 3306, "root", "root"); + private ApplicationManagerLocal getApplicationManager() { + return (ApplicationManagerLocal) request.getSession().getAttribute("applicationManager"); + } private TapSchema getTapSchema() { return getPageState().getTapSchema(); } - private SchemaPageState getPageState() { - SchemaPageState pageState = null; - HttpSession session = request.getSession(); - if (session.getAttribute(PAGE_STATE) == null) { - - Connection connection = null; - try { - connection = credentials.getConnection(); - pageState = new SchemaPageState(new TapSchema(connection, "vlkb_voinfo_schema")); - session.setAttribute(PAGE_STATE, pageState); - } catch (SQLException e) { - e.printStackTrace(System.err); - } finally { - try { - if (connection != null) { - connection.close(); - } - } catch (SQLException e) { - e.printStackTrace(System.err); - } - } - } else { - pageState = (SchemaPageState) session.getAttribute(PAGE_STATE); - } - return pageState; + private Credentials getCredentials() { + return getApplicationManager().getCredentials(); } - + + private EditTapSchemaPageState getPageState() { + return getApplicationManager().getEditTapSchemaPageState(); + } + private String getPageModelPatches() throws IOException { - SchemaPageState pageState = getPageState(); + EditTapSchemaPageState pageState = getPageState(); + + EditTapSchemaPageModel newModel = new EditTapSchemaPageModel(pageState.getTapSchema()); - PageModel newModel = new PageModel(pageState.getTapSchema()); - JsonNode jn1 = mapper.readTree(NULLABLE_GSON.toJson(pageState.getPreviousModel())); JsonNode jn2 = mapper.readTree(NULLABLE_GSON.toJson(newModel)); - + pageState.setPreviousModel(newModel); JsonNode patches = JsonDiff.asJson(jn1, jn2); @@ -130,11 +112,11 @@ public class TapSchemaResource { @Path("model") @Produces(MediaType.APPLICATION_JSON) public String getPageModelJson() { - PageModel pi = new PageModel(getTapSchema()); + EditTapSchemaPageModel pi = new EditTapSchemaPageModel(getTapSchema()); getPageState().setPreviousModel(pi); return NULLABLE_GSON.toJson(pi); } - + @POST @Path("select") public String select(@FormParam("containerName") String containerName, @FormParam("entityName") String entityName) throws IOException { @@ -146,7 +128,7 @@ public class TapSchemaResource { class RemoveColumnResult { - PageModel pageModelUpdates; + EditTapSchemaPageModel pageModelUpdates; boolean toRemove; } @@ -189,7 +171,7 @@ public class TapSchemaResource { @Path("update") public String update() throws SQLException, IOException { TapSchema tapSchema = getTapSchema(); - (new UpdateManager(credentials, tapSchema)).update(); + (new UpdateManager(getCredentials(), tapSchema)).update(); return getPageModelPatches(); } @@ -200,7 +182,7 @@ public class TapSchemaResource { public String add(String params) throws SQLException, IOException { final AddParams addParams = STANDARD_GSON.fromJson(params, AddParams.class); - (new ConnectionManager(credentials) { + (new ConnectionManager(getCredentials()) { @Override public void use(Connection connection) throws SQLException { @@ -225,10 +207,10 @@ public class TapSchemaResource { public String edit(String params) throws SQLException { EditParams editParams = STANDARD_GSON.fromJson(params, EditParams.class); boolean isChanged = getDbEntity(editParams.entity).updateValue(editParams.key, editParams.value); - + // Update previous model getPageState().getPreviousModel().updateEditableField(editParams.entity, editParams.key, editParams.value, isChanged); - + return isChanged + ""; } @@ -279,4 +261,22 @@ public class TapSchemaResource { return dialog.explain(Integer.parseInt(indexStr)); } + + @POST + @Path("getExposedSchemas") + public String getExposedSchemas(@FormParam("tapSchemaName") final String tapSchemaName) throws SQLException { + Connection connection = null; + try { + connection = getCredentials().getConnection(); + SelectTapSchemaModel selectTapSchemaModel = getApplicationManager().getSelectTapSchema(); + selectTapSchemaModel.loadExposedSchemas(connection, tapSchemaName); + return selectTapSchemaModel.getExposedSchemas(); + } catch (SQLException e) { + throw e; + } finally { + if (connection != null) { + connection.close(); + } + } + } } diff --git a/new/src/main/webapp/WEB-INF/beans.xml b/new/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000..4ca8195 --- /dev/null +++ b/new/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,5 @@ + + + diff --git a/new/src/main/webapp/WEB-INF/web.xml b/new/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 9d2b0d5..0000000 --- a/new/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - \ No newline at end of file diff --git a/new/src/main/webapp/credentials.jsp b/new/src/main/webapp/credentials.jsp new file mode 100644 index 0000000..de031ff --- /dev/null +++ b/new/src/main/webapp/credentials.jsp @@ -0,0 +1,70 @@ +<%-- + Document : index + Created on : Dec 28, 2015, 1:40:00 PM + Author : Sonia Zorba +--%> + +<%@page contentType="text/html" pageEncoding="UTF-8"%> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@taglib prefix="t" tagdir="/WEB-INF/tags" %> + +<%----%> +<%----%> + + +
+
+ +

TapSchema Manager - Credentials insertion page

+
+ + +
+ + Errors: +
    + +
  • +
    +
+
+
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
diff --git a/new/src/main/webapp/editTapSchema.jsp b/new/src/main/webapp/editTapSchema.jsp index 2ddf96a..bc075e2 100644 --- a/new/src/main/webapp/editTapSchema.jsp +++ b/new/src/main/webapp/editTapSchema.jsp @@ -11,14 +11,25 @@
-

Title

+

Editing ${tapSchemaName}

-
+
+ +

+ +
diff --git a/new/src/test/java/TestUtils.java b/new/src/test/java/TestUtils.java index 23a6669..424275d 100644 --- a/new/src/test/java/TestUtils.java +++ b/new/src/test/java/TestUtils.java @@ -17,7 +17,11 @@ import java.util.List; public class TestUtils { public static Credentials getCredentials() { - return new Credentials("localhost", 3306, "root", "root"); + Credentials credentials = new Credentials(); + credentials.setHostname("localhost"); + credentials.setUsername("root"); + credentials.setPassword("root"); + return credentials; } public static TapSchema getNewTAPSchemaOneSchemaSelected(Connection connection) throws SQLException { -- GitLab