Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 085e4783

Přidáno uživatelem Pavel Fidranský před více než 6 roky(ů)

dropped some unused functionality, merged DefaultPage with UploadFiles servlet

Zobrazit rozdíly:

sources/src/main/java/cz/zcu/kiv/offscreen/servlets/DefaultPage.java
1
package cz.zcu.kiv.offscreen.servlets;
2

  
3
import java.io.IOException;
4
import java.util.ArrayList;
5
import java.util.List;
6
import java.util.Map;
7
import javax.servlet.RequestDispatcher;
8
import javax.servlet.ServletException;
9
import javax.servlet.http.HttpServlet;
10
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletResponse;
12

  
13
import cz.zcu.kiv.offscreen.loader.configuration.ConfigurationLoader;
14
import cz.zcu.kiv.offscreen.session.SessionManager;
15
import cz.zcu.kiv.offscreen.storage.FileManager;
16
import cz.zcu.kiv.offscreen.user.DB;
17
import cz.zcu.kiv.offscreen.user.Diagram;
18

  
19
/**
20
 *
21
 * @author Jindra Pavlíková <jindra.pav2@seznam.cz>
22
 */
23
public class DefaultPage extends HttpServlet {
24

  
25
    /**
26
     * Loads currently uploaded components and renders uploadFiles.jsp.
27
     */
28
    @Override
29
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
30
        String sessionValue = SessionManager.getSessionValue(request, "JSESSIONID");
31
        if (sessionValue != null && !"".equals(sessionValue)) {
32
            String storageLocation = ConfigurationLoader.getStorageLocation(request.getServletContext());
33

  
34
            FileManager fileManager = new FileManager(sessionValue, storageLocation);
35
            if (!fileManager.isExistStorage()) {
36
                fileManager.createStorageDirectory();
37
            }
38

  
39
            request.setAttribute("componentNames", fileManager.getUploadedComponentsNames());
40
        }
41
        
42
        DB db = new DB(getServletContext()); 
43
        Diagram diagram_list = new Diagram(db);
44

  
45
        List<Map<String, String>> list = new ArrayList<>();
46
        if (request.getSession().getAttribute("logged_user") == "1") {
47
			list = diagram_list.getDiagramListByUserId((int) request.getSession().getAttribute("logged_user_id"));
48
        }
49

  
50
        List<Map<String, String>> diagram_public_list = diagram_list.getDiagramPublicList();
51

  
52
        request.setAttribute("diagramPublic", diagram_public_list);
53
        request.setAttribute("diagramNames", list);
54

  
55
        // render
56
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/uploadFiles.jsp");
57
        rd.forward(request, response);
58
    }
59
}
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/LoadGraphData.java
51 51
        response.setCharacterEncoding("UTF-8");
52 52

  
53 53
        if (request.getSession().getAttribute("demo_id") == null) {
54
            // it doesn't have EFPs -> read from ComAV
55
            if (request.getSession().getAttribute("graph_json_data") == null) {
56
                File[] uploadedFiles = fileManager.getUploadedComponents().toArray(new File[0]);
57
                File fileToDisplay = uploadedFiles[0];
54
            File[] uploadedFiles = fileManager.getUploadedComponents().toArray(new File[0]);
55
            File fileToDisplay = uploadedFiles[0];
58 56

  
59
                GraphManager graphManager = new GraphJSONDataLoader(fileToDisplay).LoadData();
60
                String configLocation = ConfigurationLoader.getConfigLocation(request.getServletContext());
61
                JSONConfigLoader configLoader = new JSONConfigLoader(graphManager, configLocation);
62
                Graph graph = graphManager.createGraph(configLoader);
63
                GraphExport export = new GraphExport(graph);
64
                JSONObject json = JSONObject.fromObject(export);
57
            GraphManager graphManager = new GraphJSONDataLoader(fileToDisplay).LoadData();
58
            String configLocation = ConfigurationLoader.getConfigLocation(request.getServletContext());
59
            JSONConfigLoader configLoader = new JSONConfigLoader(graphManager, configLocation);
60
            Graph graph = graphManager.createGraph(configLoader);
61
            GraphExport export = new GraphExport(graph);
62
            JSONObject json = JSONObject.fromObject(export);
65 63

  
66
                String resultJsonString = json.toString();
64
            String resultJsonString = json.toString();
67 65

  
68
                response.getWriter().write(resultJsonString);
69

  
70
            } else {
71
                // it has EFPs -> read from the session
72
                response.getWriter().write(request.getSession().getAttribute("graph_json_data").toString());
73

  
74
                request.getSession().removeAttribute("graph_json_data");
75
            }
66
            response.getWriter().write(resultJsonString);
76 67

  
77 68
        } else {
78 69
            String demoId = request.getSession().getAttribute("demo_id").toString();
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/ShowGraph.java
32 32

  
33 33
    @Override
34 34
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35
		// framework
36
        String framework = request.getParameter("framework") == null ? "osgi" : request.getParameter("framework");
37
        response.addCookie(new Cookie("framework", framework));
38

  
39 35
        // should save button be displayed?
40 36
		boolean showSaveButton = request.getParameter("diagram_id") != null && request.getParameter("diagram_hash") != null;
41 37
		request.setAttribute("show_icon_save", showSaveButton);
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/UploadFiles.java
1
package cz.zcu.kiv.offscreen.servlets;
2

  
3
import java.io.File;
4
import java.io.IOException;
5
import java.util.ArrayList;
6
import java.util.HashMap;
7
import java.util.List;
8
import java.util.Map;
9
import javax.servlet.RequestDispatcher;
10
import javax.servlet.ServletException;
11
import javax.servlet.http.Cookie;
12
import javax.servlet.http.HttpServlet;
13
import javax.servlet.http.HttpServletRequest;
14
import javax.servlet.http.HttpServletResponse;
15

  
16
import org.apache.commons.fileupload.servlet.ServletFileUpload;
17

  
18
import cz.zcu.kiv.offscreen.loader.configuration.ConfigurationLoader;
19
import cz.zcu.kiv.offscreen.session.SessionManager;
20
import cz.zcu.kiv.offscreen.storage.FileManager;
21
import cz.zcu.kiv.offscreen.user.DB;
22
import cz.zcu.kiv.offscreen.user.Diagram;
23

  
24
/**
25
 *
26
 * @author Jindra Pavlíková <jindra.pav2@seznam.cz>
27
 */
28
public class UploadFiles extends HttpServlet {
29

  
30
    @Override
31
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32
        doPost(request, response);
33
    }
34

  
35
    @Override
36
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37
        DB db = new DB(getServletContext());
38

  
39
        String diagram_id = request.getParameter("diagram_id");
40
        if (diagram_id != null) {
41
            Integer diagramId = Integer.parseInt(diagram_id);
42

  
43
	        Diagram diagram_edit = new Diagram(db, diagramId);
44
	        Map<String, String> diag_param = diagram_edit.getDiagramParam(diagramId);
45
	        
46
	        request.setAttribute("diagram_name", diag_param.get("name"));
47
	        request.setAttribute("diagram_user_id", diag_param.get("user_id"));
48
	        request.setAttribute("diagram_public_checked", (diag_param.get("public").compareTo("1") == 0 ? " checked=\"checked\" " : ""));
49
        } else {
50
        	request.setAttribute("diagram_name", "");
51
        	request.setAttribute("diagram_public_checked", "");
52
        	request.setAttribute("diagram_user_id", "-1");
53
        }
54

  
55
        // initialize file manager
56
        String workingDirectory;
57
        if (request.getParameter("diagram_hash") == null) {
58
            workingDirectory = SessionManager.getSessionValue(request, "JSESSIONID");
59
        } else {
60
            workingDirectory = request.getParameter("diagram_hash");
61
        }
62

  
63
        int version = 1;
64
        workingDirectory += File.separator + String.valueOf(version);
65

  
66
        String storageLocation = ConfigurationLoader.getStorageLocation(request.getServletContext());
67

  
68
        FileManager fileManager = new FileManager(workingDirectory, storageLocation);
69
        if (!fileManager.isExistStorage()) {
70
            fileManager.createStorageDirectory();
71
        }
72

  
73
        // save files from request
74
        String result;
75
        if (ServletFileUpload.isMultipartContent(request)) {
76
            result = fileManager.saveFile(request);
77
        } else {
78
            result = "";
79
        }
80

  
81
        response.addCookie(new Cookie("graphVersion", String.valueOf(version)));
82

  
83
        // response
84
        List<Map<String, String>> userDiagramList = new ArrayList<>();
85
        if (request.getSession().getAttribute("logged_user") == "1") {
86
            int loggedUserId = (int) request.getSession().getAttribute("logged_user_id");
87

  
88
			userDiagramList = new Diagram(db).getDiagramListByUserId(loggedUserId);
89
        }
90
        request.setAttribute("diagramNames", userDiagramList);
91

  
92
        List<Map<String, String>> publicDiagramList = new Diagram(db).getDiagramPublicList();
93
        request.setAttribute("diagramPublic", publicDiagramList);
94
        
95
        request.setAttribute("componentNames", fileManager.getUploadedComponentsNames());
96
        request.setAttribute("errorMessage", result);
97

  
98
        // render
99
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/uploadFiles.jsp");
100
        rd.forward(request, response);
101
    }
102
}
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/actions/CopyComponents.java
1
package cz.zcu.kiv.offscreen.servlets.actions;
2

  
3
import java.io.BufferedReader;
4
import java.io.File;
5
import java.io.FileInputStream;
6
import java.io.IOException;
7
import java.io.InputStream;
8
import java.text.ParseException;
9
import java.util.List;
10
import javax.servlet.ServletException;
11
import javax.servlet.http.HttpServlet;
12
import javax.servlet.http.HttpServletRequest;
13
import javax.servlet.http.HttpServletResponse;
14

  
15
import org.json.JSONArray;
16
import org.json.JSONObject;
17

  
18
import cz.zcu.kiv.offscreen.loader.configuration.ConfigurationLoader;
19
import cz.zcu.kiv.offscreen.session.SessionManager;
20
import cz.zcu.kiv.offscreen.storage.FileManager;
21

  
22
/**
23
 * @author Pavel Fidransky [jsem@pavelfidransky.cz]
24
 */
25
public class CopyComponents extends HttpServlet {
26

  
27
    /**
28
     * Makes a copy of components stored in the current graph version folder to the (current + 1) folder. Components to
29
     * be copied are set by input JSON.
30
     */
31
    @Override
32
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
33
        // read input data
34
        StringBuilder sb = new StringBuilder();
35
        try (BufferedReader reader = request.getReader()) {
36
            String line;
37
            while ((line = reader.readLine()) != null) {
38
                sb.append(line);
39
            }
40
        }
41

  
42
        // parse the data as JSON
43
        JSONObject componentsJson;
44
        try {
45
            componentsJson = new JSONObject(sb.toString());
46
        } catch (ParseException e) {
47
            response.sendError(response.SC_BAD_REQUEST);
48
            return;
49
        }
50

  
51
        // get current graph version from cookie
52
        int version = Integer.parseInt(SessionManager.getSessionValue(request, "graphVersion"));
53

  
54
        // initialize file manager
55
        String workingDirectory;
56
        if (request.getParameter("diagram_hash") == null) {
57
            workingDirectory = SessionManager.getSessionValue(request, "JSESSIONID");
58
        } else {
59
            workingDirectory = request.getParameter("diagram_hash");
60
        }
61

  
62
        String storageLocation = ConfigurationLoader.getStorageLocation(request.getServletContext());
63

  
64
        FileManager oldFileManager = new FileManager(workingDirectory + File.separator + String.valueOf(version), storageLocation);
65
        FileManager newFileManager = new FileManager(workingDirectory + File.separator + String.valueOf(version + 1), storageLocation);
66

  
67
        List<String> currentComponents = oldFileManager.getUploadedComponentsNames();
68

  
69
        // copy components
70
        JSONArray components = componentsJson.getJSONArray("components");
71
        for (int i = 0; i < components.length(); i++) {
72
            JSONObject component = components.getJSONObject(i);
73
            String name = component.getString("name");
74

  
75
            if (!currentComponents.contains(name)) continue;
76

  
77
            String oldPath = storageLocation + File.separator + workingDirectory + File.separator + String.valueOf(version) + File.separator + name;
78
            newFileManager.saveFile(new FileInputStream( oldPath), name);
79
        }
80
    }
81
}
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/actions/DeleteAllComponents.java
47 47
            request.setAttribute("componentNames", fileManager.getUploadedComponentsNames());
48 48

  
49 49
            // redirect
50
            response.sendRedirect(getServletContext().getInitParameter("HOME_URL") + "upload-files");
50
            response.sendRedirect(getServletContext().getInitParameter("HOME_URL"));
51 51
        }
52 52
    }
53 53
}
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/actions/DeleteComponent.java
75 75

  
76 76
        } else {
77 77
            // redirect
78
            response.sendRedirect(getServletContext().getInitParameter("HOME_URL") + "upload-files" + redirectUrlParams);
78
            response.sendRedirect(getServletContext().getInitParameter("HOME_URL") + redirectUrlParams);
79 79
        }
80 80
    }
81 81
}
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/actions/DownloadComponent.java
1
package cz.zcu.kiv.offscreen.servlets.actions;
2

  
3
import java.io.File;
4
import java.io.IOException;
5
import java.io.InputStream;
6
import java.net.HttpURLConnection;
7
import java.net.URL;
8
import javax.servlet.ServletException;
9
import javax.servlet.http.HttpServlet;
10
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletResponse;
12

  
13
import org.apache.log4j.Logger;
14
import org.json.JSONObject;
15

  
16
import cz.zcu.kiv.offscreen.loader.configuration.ConfigurationLoader;
17
import cz.zcu.kiv.offscreen.session.SessionManager;
18
import cz.zcu.kiv.offscreen.storage.FileManager;
19

  
20
/**
21
 * @author Pavel Fidransky [jsem@pavelfidransky.cz]
22
 */
23
public class DownloadComponent extends HttpServlet {
24

  
25
    private String crceApiBase;
26
    private FileManager fileManager;
27

  
28
    private Logger logger = Logger.getLogger(DownloadComponent.class);
29

  
30
    /**
31
     * Downloads component by its UUID set in query parameter. The component is then stored in the current graph version
32
     * folder. As a response, JSON containing component's UUID and filename is returned.
33
     */
34
    @Override
35
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
36
        logger.error("Method is no longer supported because CRCE is removed from project.");
37
//        // there was no uuid passed in the request
38
//        if (request.getParameter("uuid") == null) {
39
//            response.sendError(response.SC_BAD_REQUEST);
40
//            return;
41
//        }
42
//
43
//        // initialize file manager
44
//        String workingDirectory;
45
//        if (request.getParameter("diagram_hash") == null) {
46
//            workingDirectory = SessionManager.getSessionValue(request, "JSESSIONID");
47
//        } else {
48
//            workingDirectory = request.getParameter("diagram_hash");
49
//        }
50
//
51
//        if (request.getParameter("graphVersion") != null) {
52
//            workingDirectory += File.separator + request.getParameter("graphVersion");
53
//        } else {
54
//            workingDirectory += File.separator + SessionManager.getSessionValue(request, "graphVersion");
55
//        }
56
//
57
//        String storageLocation = ConfigurationLoader.getStorageLocation(request.getServletContext());
58
//
59
//        fileManager = new FileManager(workingDirectory, storageLocation);
60
//        if (!fileManager.isExistStorage()) {
61
//            fileManager.createStorageDirectory();
62
//        }
63
//
64
//        // download component
65
//        crceApiBase = ConfigurationLoader.getCrceApiBase(request.getServletContext());
66
//
67
//        String uuid = request.getParameter("uuid");
68
//        String name = downloadComponent(uuid);
69
//
70
//        JSONObject componentJson = new JSONObject();
71
//        componentJson.put("uuid", uuid);
72
//        componentJson.put("name", name);
73
//
74
//        // send response
75
//        response.setContentType("application/json");
76
//        response.getWriter().write(componentJson.toString());
77
    }
78

  
79
    /*
80
    PRIVATE METHODS
81
     */
82

  
83
    private String downloadComponent(String uuid) throws IOException {
84
        URL url = new URL(this.crceApiBase + "/resources/" + uuid);
85
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
86
        connection.setConnectTimeout(60 * 1000);
87
        connection.setReadTimeout(60 * 1000);
88

  
89
        InputStream inputStream = connection.getInputStream();
90

  
91
        String contentDisposition = connection.getHeaderField("Content-Disposition");
92
        String fileName = contentDisposition.replaceFirst("(?i)^.*filename = ([^\"]+).*$", "$1");
93
        File file = new File(fileName);
94

  
95
        fileManager.saveFile(inputStream, file.getName());
96

  
97
        inputStream.close();
98

  
99
        return file.getName();
100
    }
101

  
102
}
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/actions/UploadFiles.java
1
package cz.zcu.kiv.offscreen.servlets.actions;
2

  
3
import java.io.File;
4
import java.io.IOException;
5
import java.util.ArrayList;
6
import java.util.HashMap;
7
import java.util.Map;
8
import javax.servlet.RequestDispatcher;
9
import javax.servlet.ServletException;
10
import javax.servlet.http.Cookie;
11
import javax.servlet.http.HttpServlet;
12
import javax.servlet.http.HttpServletRequest;
13
import javax.servlet.http.HttpServletResponse;
14

  
15
import org.apache.commons.fileupload.servlet.ServletFileUpload;
16

  
17
import cz.zcu.kiv.offscreen.loader.configuration.ConfigurationLoader;
18
import cz.zcu.kiv.offscreen.session.SessionManager;
19
import cz.zcu.kiv.offscreen.storage.FileManager;
20
import cz.zcu.kiv.offscreen.user.DB;
21
import cz.zcu.kiv.offscreen.user.Diagram;
22

  
23
/**
24
 *
25
 * @author Jindra Pavlíková <jindra.pav2@seznam.cz>
26
 */
27
public class UploadFiles extends HttpServlet {
28

  
29
    @Override
30
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
31
        doPost(request, response);
32
    }
33

  
34
    @Override
35
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
36
        DB db = new DB(getServletContext());
37

  
38
        String diagram_id = request.getParameter("diagram_id");
39
        if (diagram_id != null) {
40
            Integer diagramId = Integer.parseInt(diagram_id);
41

  
42
	        Diagram diagram_edit = new Diagram(db, diagramId);
43
	        Map<String, String> diag_param = diagram_edit.getDiagramParam(diagramId);
44
	        
45
	        request.setAttribute("diagram_name", diag_param.get("name"));
46
	        request.setAttribute("diagram_user_id", diag_param.get("user_id"));
47
	        request.setAttribute("diagram_public_checked", (diag_param.get("public").compareTo("1") == 0 ? " checked=\"checked\" " : ""));
48
        } else {
49
        	request.setAttribute("diagram_name", "");
50
        	request.setAttribute("diagram_public_checked", "");
51
        	request.setAttribute("diagram_user_id", "-1");
52
        }
53

  
54
        // initialize file manager
55
        String workingDirectory;
56
        if (request.getParameter("diagram_hash") == null) {
57
            workingDirectory = SessionManager.getSessionValue(request, "JSESSIONID");
58
        } else {
59
            workingDirectory = request.getParameter("diagram_hash");
60
        }
61

  
62
        int version = 1;
63
        workingDirectory += File.separator + String.valueOf(version);
64

  
65
        String storageLocation = ConfigurationLoader.getStorageLocation(request.getServletContext());
66

  
67
        FileManager fileManager = new FileManager(workingDirectory, storageLocation);
68
        if (!fileManager.isExistStorage()) {
69
            fileManager.createStorageDirectory();
70
        }
71

  
72
        // save files from request
73
        String result;
74
        if (ServletFileUpload.isMultipartContent(request)) {
75
            result = fileManager.saveFile(request);
76
        } else {
77
            result = "";
78
        }
79

  
80
        response.addCookie(new Cookie("graphVersion", String.valueOf(version)));
81

  
82
        // response
83
        ArrayList<Map<String, String>> list = new ArrayList<>();
84
        if (request.getSession().getAttribute("logged_user") == "1") {
85
            int loggedUserId = (int) request.getSession().getAttribute("logged_user_id");
86

  
87
			list = new Diagram(db).getDiagramListByUserId(loggedUserId);
88
        }
89
        request.setAttribute("diagramNames", list);
90

  
91
        request.setAttribute("diagramPublic", new Diagram(db).getDiagramPublicList());
92
        
93
        request.setAttribute("componentNames", fileManager.getUploadedComponentsNames());
94
        request.setAttribute("errorMessage", result);
95

  
96
        // render
97
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/uploadFiles.jsp");
98
        rd.forward(request, response);
99
    }
100
}
sources/src/main/webapp/META-INF/context.xml
1 1
<?xml version="1.0" encoding="UTF-8"?>
2
<Context antiJARLocking="true" path="/VisualizationTool"/>
2
<Context antiJARLocking="true" path="/imiger"/>
sources/src/main/webapp/WEB-INF/glassfish-web.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
3
<glassfish-web-app error-url="">
4
  <context-root>/VisualizationTool</context-root>
5
  <class-loader delegate="true"/>
6
  <jsp-config>
7
    <property name="keepgenerated" value="true">
8
      <description>Keep a copy of the generated servlet class' java code.</description>
9
    </property>
10
  </jsp-config>
11
</glassfish-web-app>
sources/src/main/webapp/WEB-INF/web.xml
44 44
	<!--
45 45
	servlets
46 46
	-->
47
	<servlet>
48
		<servlet-name>DefaultPage</servlet-name>
49
		<servlet-class>cz.zcu.kiv.offscreen.servlets.DefaultPage</servlet-class>
50
	</servlet>
51 47
	<servlet>
52 48
		<servlet-name>Register</servlet-name>
53 49
		<servlet-class>cz.zcu.kiv.offscreen.servlets.Register</servlet-class>
......
66 62
	</servlet>
67 63
	<servlet>
68 64
		<servlet-name>UploadFiles</servlet-name>
69
		<servlet-class>cz.zcu.kiv.offscreen.servlets.actions.UploadFiles</servlet-class>
70
	</servlet>
71
	<servlet>
72
		<servlet-name>CopyComponents</servlet-name>
73
		<servlet-class>cz.zcu.kiv.offscreen.servlets.actions.CopyComponents</servlet-class>
65
		<servlet-class>cz.zcu.kiv.offscreen.servlets.UploadFiles</servlet-class>
74 66
	</servlet>
75 67
	<servlet>
76 68
		<servlet-name>DeleteAllComponents</servlet-name>
......
84 76
		<servlet-name>DiagramEndpoint</servlet-name>
85 77
		<servlet-class>cz.zcu.kiv.offscreen.servlets.actions.DiagramEndpoint</servlet-class>
86 78
	</servlet>
87
	<servlet>
88
		<servlet-name>DownloadComponent</servlet-name>
89
		<servlet-class>cz.zcu.kiv.offscreen.servlets.actions.DownloadComponent</servlet-class>
90
	</servlet>
91 79
	<servlet>
92 80
		<servlet-name>LoadGraphData</servlet-name>
93 81
		<servlet-class>cz.zcu.kiv.offscreen.servlets.LoadGraphData</servlet-class>
......
97 85
	URL-to-servlet mappings
98 86
	-->
99 87
	<servlet-mapping>
100
		<servlet-name>DefaultPage</servlet-name>
88
		<servlet-name>UploadFiles</servlet-name>
101 89
		<url-pattern></url-pattern>
102 90
	</servlet-mapping>
103 91
	<servlet-mapping>
......
116 104
		<servlet-name>ShowGraph</servlet-name>
117 105
		<url-pattern>/graph</url-pattern>
118 106
	</servlet-mapping>
119
	<servlet-mapping>
120
		<servlet-name>UploadFiles</servlet-name>
121
		<url-pattern>/upload-files</url-pattern>
122
	</servlet-mapping>
123
	<servlet-mapping>
124
		<servlet-name>CopyComponents</servlet-name>
125
		<url-pattern>/api/copy-components</url-pattern>
126
	</servlet-mapping>
127 107
	<servlet-mapping>
128 108
		<servlet-name>DeleteAllComponents</servlet-name>
129 109
		<url-pattern>/delete-components</url-pattern>
......
136 116
		<servlet-name>DiagramEndpoint</servlet-name>
137 117
		<url-pattern>/api/diagram</url-pattern>
138 118
	</servlet-mapping>
139
	<servlet-mapping>
140
		<servlet-name>DownloadComponent</servlet-name>
141
		<url-pattern>/api/download-component</url-pattern>
142
	</servlet-mapping>
143 119
	<servlet-mapping>
144 120
		<servlet-name>LoadGraphData</servlet-name>
145 121
		<url-pattern>/api/graph-data</url-pattern>
sources/src/main/webapp/js/app.js
62 62
	 * @param diagramHash Diagram hash.
63 63
	 */
64 64
	this.diagramLoader = function(diagramId, diagramHash) {
65
		return loadGraphData.bind(this, diagramId, diagramHash, null, null);
66
	};
67

  
68
	/**
69
	 * Loads graph using EFP data.
70
	 * @param {boolean} withEfps Is EFPs in graph?
71
	 * @param {object} efpSettings EFP settings.
72
	 */
73
	this.efpLoader = function(withEfps, efpSettings) {
74
		return loadGraphData.bind(this, null, null, withEfps, efpSettings);
65
		return loadGraphData.bind(this, diagramId, diagramHash);
75 66
	};
76 67

  
77 68
	/**
......
292 283
	 * Loads graph data of a diagram.
293 284
	 * @param {string} diagramId Identifier of the diagram to be loaded.
294 285
	 * @param {string} diagramHash Hash of the diagram to be loaded.
295
	 * @param {boolean} withEfps Load diagram with extra-functional properties.
296
	 * @param {object} efpSettings Settings of EFP graph.
297 286
	 */
298
	function loadGraphData(diagramId, diagramHash, withEfps, efpSettings) {
287
	function loadGraphData(diagramId, diagramHash) {
299 288
		var self = this;
300 289

  
301 290
		self.loader.enable();
......
313 302
			loadDiagramURL += '&diagramHash=' + diagramHash;
314 303
		}
315 304

  
316
		// TODO: how to handle EFPs? see old code for details
317
		if (withEfps !== null) {
318
			// Build graph with EFPs
319
			//GraphManager.isEfpGraph = true;
320
	
321
			// set EFP settings
322
			//GraphManager.efpMinIntDiameter = efpSettings.minInterfaceDiameter;
323
			//GraphManager.efpMaxIntDiameter = efpSettings.maxInterfaceDiameter;
324
		}
325

  
326 305
		// exported data of graph
327 306
		var graphExportData = null;
328 307

  
......
345 324

  
346 325
		}, function() {
347 326
			// go to the upload page
348
			window.location.replace('./upload-files');
327
			window.location.replace('./');
349 328
		});
350 329
	}
351 330

  
sources/src/main/webapp/logged_user_menu.jsp
7 7
	<ul>	
8 8
		<c:forEach items="${diagramNames}" var="diagramName">
9 9
			<li id="diagram_id_${diagramName.id}">
10
				<a href="<%= getServletContext().getInitParameter("HOME_URL") %>upload-files?diagram_id=${diagramName.id}&diagram_hash=${diagramName.hash}">${diagramName.name}</a><a href="#" onclick="return deleteDiagram(${diagramName.id});"><img src="images/button_cancel.png" alt="odstranit" class="imgDelete"/></a>
10
				<a href="<%= getServletContext().getInitParameter("HOME_URL") %>?diagram_id=${diagramName.id}&diagram_hash=${diagramName.hash}">${diagramName.name}</a><a href="#" onclick="return deleteDiagram(${diagramName.id});"><img src="images/button_cancel.png" alt="odstranit" class="imgDelete"/></a>
11 11
			</li>
12 12
		</c:forEach>
13 13
		<li id="diagram_id_new">
......
21 21
	<ul>	
22 22
		<c:forEach items="${diagramPublic}" var="diagramPublic">
23 23
			<li id="public_diagram_id_${diagramPublic.id}">
24
				<a href="<%= getServletContext().getInitParameter("HOME_URL") %>upload-files?diagram_id=${diagramPublic.id}&diagram_hash=${diagramPublic.hash}">${diagramPublic.name}</a>
24
				<a href="<%= getServletContext().getInitParameter("HOME_URL") %>?diagram_id=${diagramPublic.id}&diagram_hash=${diagramPublic.hash}">${diagramPublic.name}</a>
25 25
			</li>
26 26
		</c:forEach>
27 27
	</ul>
sources/src/main/webapp/showGraph.jsp
1 1
<%@page contentType="text/html" pageEncoding="UTF-8"%>
2
<%@page import="cz.zcu.kiv.offscreen.graph.efp.EfpGraphicSettings"%>
3
<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
4
<%@page import="cz.zcu.kiv.comav.loaders.osgi.service.RequiredService"%>
5
<%@page import="sun.reflect.ReflectionFactory.GetReflectionFactoryAction"%>
6 2
<%@page import="java.util.Map"%>
7 3
<%@page import="com.google.gson.Gson"%>
8 4
<%@page import="com.google.gson.GsonBuilder"%>
......
60 56

  
61 57
	<body>
62 58
		<%
63
		//String path = request.getContextPath();
64 59
		String getProtocol = request.getScheme();
65 60
		String getDomain = request.getServerName();
66 61
		String getPort = Integer.toString(request.getServerPort());
67
		String getPath = getProtocol+"://"+getDomain+":"+getPort+"/";
62
		String getPath = getProtocol + "://" + getDomain + ":" + getPort + "/";
68 63
		String getURI = request.getRequestURI();
69 64

  
70
		// set graphic settings for EFP graph
71
		ServletContext context = this.getServletContext();
72
		EfpGraphicSettings efpSettings = new EfpGraphicSettings();
73

  
74
		efpSettings.setMinInterfaceDiameter(Integer.valueOf(context.getInitParameter("minInterfaceDiameter")));
75
		efpSettings.setMaxInterfaceDiameter(Integer.valueOf(context.getInitParameter("maxInterfaceDiameter")));
76

  
77
		// JSONize graph settings
78
		GsonBuilder gsonBuilder = new GsonBuilder();
79
		Gson gson = gsonBuilder.create();
80

  
81
		String efpSettingsJson = gson.toJson(efpSettings);
82

  
83 65
		// logged-in user
84 66
		boolean logged_user = false;
85
		boolean diagram_id_hash_set = false;
86
		if (request.getSession().getAttribute("logged_user") == "1"){
67
		if (request.getSession().getAttribute("logged_user") == "1") {
87 68
			logged_user = true;
88 69
		}
89 70

  
90
		if (request.getParameter("diagram_id")!= null && request.getParameter("diagram_hash") != null) {
71
		// saved diagram
72
		boolean diagram_id_hash_set = false;
73
		if (request.getParameter("diagram_id") != null && request.getParameter("diagram_hash") != null) {
91 74
			diagram_id_hash_set = true;
92 75
		}
93 76

  
94 77
		String diagram_url = "";
95
		boolean show_icon_save = true;
96 78
		if (logged_user && diagram_id_hash_set) {
97
			diagram_url = "?diagram_id="+ request.getParameter("diagram_id")+"&diagram_hash=" + request.getParameter("diagram_hash");
98
			show_icon_save = true;
99
		}
100

  
101
		boolean is_efp_diagram = false;
102
		if (request.getAttribute("efpPortalRefererUrl") != null) {
103
			is_efp_diagram = true;
79
			diagram_url = "?diagram_id=" + request.getParameter("diagram_id") + "&diagram_hash=" + request.getParameter("diagram_hash");
104 80
		}
105 81
		%>
106 82

  
......
110 86

  
111 87
				<h2 class="header-title">Interactive Multimodal Graph Explorer</h2>
112 88

  
113
				<% if (!is_efp_diagram) { %>
114
					<jsp:include page="logged_user.jsp" />
115
				<% } %>
89
				<jsp:include page="logged_user.jsp" />
116 90

  
117 91
				<nav class="navbar" id="navigation">
118 92
					<ul>
......
172 146
							<hr class="navbar-separator">
173 147
						</li>
174 148
						<li>
175
							<% if (!is_efp_diagram) { %>
176
								<a href="<%=getServletContext().getInitParameter("HOME_URL")%>upload-files<%=diagram_url%>" class="btn btn-block back-to-upload" id="view_back_to_upload" title="Back to upload"></a>
177
							<% } else { %>
178
								<a href="<%=request.getAttribute("efpPortalRefererUrl")%>" class="btn btn-block back-to-upload" id="view_back_to_upload" title="Back"></a>
179
							<% } %>
149
							<a href="<%=getServletContext().getInitParameter("HOME_URL")%><%=diagram_url%>" class="btn btn-block back-to-upload" id="view_back_to_upload" title="Back to upload"></a>
180 150
						</li>
181 151
						<li>
182 152
							<hr class="navbar-separator">
......
186 156
								<img src="images/layout_off.png" id="applyLayoutImg" alt="Apply layout to current graph.">
187 157
							</button>
188 158
						</li>
189
						<%
190
						if (request.getAttribute("efpPortalEfpNames") != null) {
191
							final Map<String, String> efpMappings = (Map<String, String>)request.getAttribute("efpPortalEfpNames");
192
							if (!efpMappings.isEmpty()) {
193
						%>
194
						<li><hr class="navbar-separator"></li>
195
						<li>
196
							<select name="EFPselector" class="EFP-selector" id="EFPselector">
197
								<option value="" selected="selected" class="option_default">none</option>
198
								<% for (Map.Entry<String, String> entry : efpMappings.entrySet()) { %>
199
									<option value="<%=entry.getValue()%>"><%=entry.getValue()%></option>
200
								<% } %>
201
							</select>
202
						</li>
203
						<%
204
							}
205
						}
206
						%>
207

  
208
						<% if (show_icon_save) { %>
209 159
						<li>
210 160
							<hr class="navbar-separator">
211 161
						</li>
......
218 168
							<hr class="navbar-separator">
219 169
						</li>
220 170
						<li>
221
							<a href="<%=getServletContext().getInitParameter("HOME_URL")%>graph?diagram_id=<%=request.getParameter("diagram_id")%>&diagram_hash=<%=request.getParameter("diagram_hash")%>" class="btn btn-block view-refresh-diagram" id="view_refresh_diagram" title="Refresh diagram"></a>
171
							<a href="<%=getServletContext().getInitParameter("HOME_URL")%>graph<%=diagram_url%>" class="btn btn-block view-refresh-diagram" id="view_refresh_diagram" title="Refresh diagram"></a>
222 172
						</li>
223 173
						<li>
224 174
							<hr class="navbar-separator">
225 175
						</li>
226 176
						<li>
227
							<a href="<%=getServletContext().getInitParameter("HOME_URL")%>graph?diagram_id=<%=request.getParameter("diagram_id")%>&diagram_hash=<%=request.getParameter("diagram_hash")%>" class="btn btn-block view-refresh-reset-diagram" id="view_refresh_reset_diagram" onclick="reset_diagram(<%=request.getParameter("diagram_id")%>,'<%=request.getParameter("diagram_hash")%>'); return false;" title="Refresh diagram - reset position"></a>
177
							<a href="<%=getServletContext().getInitParameter("HOME_URL")%>graph<%=diagram_url%>" class="btn btn-block view-refresh-reset-diagram" id="view_refresh_reset_diagram" onclick="reset_diagram(<%=request.getParameter("diagram_id")%>,'<%=request.getParameter("diagram_hash")%>'); return false;" title="Refresh diagram - reset position"></a>
228 178
						</li>
229
						<% } %>
230 179
					</ul>
231 180
				</nav>
232 181
			</header>
......
278 227
		app.HOME_URL = '<%=getPath%>imiger/';
279 228

  
280 229
		$(document).ready(function() {
281
			var loaderFn;
282
			<% if (request.getAttribute("graph_json") != null) { %>
283
				loaderFn = app.efpLoader('<%=request.getAttribute("graph_json")%>', '<%=efpSettingsJson%>');
284
			<% } else { %>
285
				loaderFn = app.diagramLoader('<%=request.getParameter("diagram_id")%>', '<%=request.getParameter("diagram_hash")%>');
286
			<% } %>
230
			var loaderFn = app.diagramLoader('<%=request.getParameter("diagram_id")%>', '<%=request.getParameter("diagram_hash")%>');
287 231

  
288 232
			app.run(loaderFn);
289 233
		});
sources/src/main/webapp/uploadFiles.jsp
35 35
						<p class="errorMessage">${errorMessage}</p>
36 36
					</c:if>
37 37

  
38
					<h3>Upload components:</h3>
38
					<h3>Upload SPADe data:</h5>
39 39

  
40
					<form name="uploadForm" action="upload-files" method="post" enctype="multipart/form-data">
40
					<form name="uploadForm" method="post" enctype="multipart/form-data">
41 41
						<div class="form-field">
42
							<input type="file" name="uploads[]" class="hidden" id="fileUpload" multiple>
43

  
44
							<button type="button">
45
								<label for="fileUpload">Browse files</label>
46
							</button>
47

  
48
							<label for="fileUpload" id="fileCounter"></label>
42
							<input type="file" name="file">
49 43
						</div>
50 44

  
51 45
						<input type="submit" value="Upload">
52 46
					</form>
53 47

  
54
					<hr class="verticalSeparator">
55

  
56
					<% if (request.getParameter("diagram_id") != null) { %>
57
						<form name="diagramForm" action="graph?diagram_id=<%= request.getParameter("diagram_id") %>&diagram_hash=<%= request.getParameter("diagram_hash") %>" method="post">
58
							<input type="hidden" name="diagram_id" value="<%= request.getParameter("diagram_id") %>">
59

  
60
							<%
61
							if (request.getSession().getAttribute("logged_user_id") != null &&
62
									request.getAttribute("diagram_user_id") != null && 
63
									request.getAttribute("diagram_user_id").toString().compareTo(request.getSession().getAttribute("logged_user_id").toString()) == 0 ) { %>
64

  
65
								<div class="form-field">
66
									<label for="diagramName">Edit diagram name:</label><br>
67
									<input type="text" name="diagram_name" id="diagramName" value="${diagram_name}">
68
								</div>
69

  
70
								<div class="form-field">
71
									<label for="publicDiagram">Public diagram:</label><br>
72
									<input type="checkbox" name="public_diagram" id="publicDiagram" value="1" ${diagram_public_checked}>
73
								</div>
74

  
75
							<% } else if (request.getSession().getAttribute("logged_user_id") != null) { %>
76
								<div class="form-field">
77
									<label for="diagramName">Edit diagram name:</label><br>
78
									<input type="text" name="diagram_name" id="diagramName" value="${diagram_name}">
79
								</div>
80

  
81
								<div class="form-field">
82
									<label for="copyDiagram">Copy diagram:</label><br>
83
									<input type="checkbox" name="copy_diag" id="copyDiagram" value="1">
84
								</div>
85
							<% } %>
86

  
87
					<% } else { %>
88
						<form name="diagramForm" action="graph" method="post">
89
							<% if (request.getSession().getAttribute("logged_user") == "1" ) { %>
90
								<div class="form-field">
91
									<label for="diagramName">Diagram name:</label><br>
92
									<input type="text" name="diagram_name" id="diagramName">
93
								</div>
94

  
95
								<div class="form-field">
96
									<label for="publicDiagram">Public diagram:</label><br>
97
									<input type="checkbox" name="public_diagram" id="publicDiagram" value="1" ${diagram_public_checked}>
98
								</div>
99
							<% } %>
100
					<% } %>
101

  
102
						<!--
103
						<div class="form-field">
104
							<label for="framework">Choose framework:</label><br>
105
							<select name="framework" id="framework">
106
								<option value="osgi">OSGi</option>
107
								<option value="ejb3">EJB3</option>
108
								<option value="sofa2">SOFA2</option>
109
							</select>
110
						</div>
111
						-->
112

  
113
						<input type="submit" value="Start visualization" ${not empty componentNames ? "" : "disabled='disabled'"}>
114
					</form>
115

  
116 48
					<c:if test="${not empty componentNames}">
117 49
						<hr class="verticalSeparator">
118 50

  
......
139 71
							</c:forEach>
140 72
						</ul>
141 73
					</c:if>
74

  
75
					<hr class="verticalSeparator">
76

  
77
					<form name="diagramForm" action="graph" method="post">
78
						<input type="submit" value="Start visualization" ${not empty componentNames ? "" : "disabled='disabled'"}>
79
					</form>
142 80
				</div>
143 81
			</main>
144 82
		</div>
145

  
146
		<script>
147
			var fileUploadField = document.getElementById('fileUpload');
148
			var fileCounter = document.getElementById('fileCounter');
149

  
150
			fileUploadField.addEventListener('change', function() {
151
				var message = this.files.length === 1 ? '1 file selected.' : (this.files.length + ' files selected.');
152
				fileCounter.innerText = message;
153
			});
154
		</script>
155 83
	</body>
156 84
</html>

Také k dispozici: Unified diff