View Javadoc
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    /** The Constant LAST_MODIFIED_PROPERTY. */
27    private static final String LAST_MODIFIED_PROPERTY = "Last-Modified";
28  
29    /** The Constant IF_MODIFIED_SINCE_DATE_FORMAT. */
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  }