1 package org.exoplatform.ecm.connector;
2
3 import java.text.DateFormat;
4 import java.text.SimpleDateFormat;
5 import java.util.Date;
6 import java.util.List;
7
8 import javax.ws.rs.GET;
9 import javax.ws.rs.Path;
10 import javax.ws.rs.core.MediaType;
11 import javax.ws.rs.core.Response;
12 import javax.xml.parsers.DocumentBuilderFactory;
13 import javax.xml.transform.dom.DOMSource;
14
15 import org.exoplatform.ecm.ProductVersions;
16 import org.exoplatform.services.cms.drives.DriveData;
17 import org.exoplatform.services.cms.drives.ManageDriveService;
18 import org.exoplatform.services.rest.resource.ResourceContainer;
19 import org.exoplatform.services.wcm.utils.WCMCoreUtils;
20 import org.w3c.dom.Document;
21 import org.w3c.dom.Element;
22
23 @Path("/configuration/")
24 public class MigrationConnector implements ResourceContainer {
25
26
27 private static final String LAST_MODIFIED_PROPERTY = "Last-Modified";
28
29
30 private static final String IF_MODIFIED_SINCE_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z";
31
32 @GET
33 @Path("/export/")
34 public Response export() throws Exception {
35 DateFormat dateFormat = new SimpleDateFormat(IF_MODIFIED_SINCE_DATE_FORMAT);
36 try {
37 Document document =
38 DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
39 Element element = document.createElement("ecm");
40 element.setAttribute("version", ProductVersions.getCurrentVersion());
41 document.appendChild(element);
42 Element drives = document.createElement("drives");
43 element.appendChild(drives);
44 ManageDriveService driveService = WCMCoreUtils.getService(ManageDriveService.class);
45 List<DriveData> drivesList = driveService.getAllDrives();
46 for (DriveData drive:drivesList) {
47 Element driveElt = document.createElement("drive");
48 driveElt.setAttribute("name", drive.getName());
49 driveElt.setAttribute("views", drive.getViews());
50 driveElt.setAttribute("workspace", drive.getWorkspace());
51 driveElt.setAttribute("allowCreateFolders", drive.getAllowCreateFolders());
52 driveElt.setAttribute("homePath", drive.getHomePath());
53 driveElt.setAttribute("permissions", drive.getPermissions());
54 driveElt.setAttribute("homePath", drive.getHomePath());
55 driveElt.setAttribute("icon", drive.getIcon());
56 driveElt.setAttribute("showHiddenNode", String.valueOf(drive.getShowHiddenNode()));
57 driveElt.setAttribute("viewNonDocument", String.valueOf(drive.getViewNonDocument()));
58 driveElt.setAttribute("viewPreferences", String.valueOf(drive.getViewPreferences()));
59 driveElt.setAttribute("viewSideBar", String.valueOf(drive.getViewSideBar()));
60 String[] permissions = drive.getAllPermissions();
61 Element permsElt = document.createElement("permissions");
62 driveElt.appendChild(permsElt);
63 for (String permission:permissions) {
64 Element permElt = document.createElement("permission");
65 permElt.setTextContent(permission);
66 permsElt.appendChild(permElt);
67 }
68
69 drives.appendChild(driveElt);
70 }
71
72 return Response.ok(new DOMSource(document), MediaType.TEXT_XML)
73 .header(LAST_MODIFIED_PROPERTY, dateFormat.format(new Date()))
74 .build();
75 } catch (Exception e) {
76 Response.serverError().build();
77 }
78 return Response.ok().header(LAST_MODIFIED_PROPERTY, dateFormat.format(new Date())).build();
79 }
80
81 }