package org.exoplatform.ecm.connector;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.dom.DOMSource;
import org.exoplatform.ecm.ProductVersions;
import org.exoplatform.services.cms.drives.DriveData;
import org.exoplatform.services.cms.drives.ManageDriveService;
import org.exoplatform.services.rest.resource.ResourceContainer;
import org.exoplatform.services.wcm.utils.WCMCoreUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@Path("/configuration/")
public class MigrationConnector implements ResourceContainer {
/** The Constant LAST_MODIFIED_PROPERTY. */
private static final String LAST_MODIFIED_PROPERTY = "Last-Modified";
/** The Constant IF_MODIFIED_SINCE_DATE_FORMAT. */
private static final String IF_MODIFIED_SINCE_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z";
@GET
@Path("/export/")
public Response export() throws Exception {
DateFormat dateFormat = new SimpleDateFormat(IF_MODIFIED_SINCE_DATE_FORMAT);
try {
Document document =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element element = document.createElement("ecm");
element.setAttribute("version", ProductVersions.getCurrentVersion());
document.appendChild(element);
Element drives = document.createElement("drives");
element.appendChild(drives);
ManageDriveService driveService = WCMCoreUtils.getService(ManageDriveService.class);
List<DriveData> drivesList = driveService.getAllDrives();
for (DriveData drive:drivesList) {
Element driveElt = document.createElement("drive");
driveElt.setAttribute("name", drive.getName());
driveElt.setAttribute("views", drive.getViews());
driveElt.setAttribute("workspace", drive.getWorkspace());
driveElt.setAttribute("allowCreateFolders", drive.getAllowCreateFolders());
driveElt.setAttribute("homePath", drive.getHomePath());
driveElt.setAttribute("permissions", drive.getPermissions());
driveElt.setAttribute("homePath", drive.getHomePath());
driveElt.setAttribute("icon", drive.getIcon());
driveElt.setAttribute("showHiddenNode", String.valueOf(drive.getShowHiddenNode()));
driveElt.setAttribute("viewNonDocument", String.valueOf(drive.getViewNonDocument()));
driveElt.setAttribute("viewPreferences", String.valueOf(drive.getViewPreferences()));
driveElt.setAttribute("viewSideBar", String.valueOf(drive.getViewSideBar()));
String[] permissions = drive.getAllPermissions();
Element permsElt = document.createElement("permissions");
driveElt.appendChild(permsElt);
for (String permission:permissions) {
Element permElt = document.createElement("permission");
permElt.setTextContent(permission);
permsElt.appendChild(permElt);
}
drives.appendChild(driveElt);
}
return Response.ok(new DOMSource(document), MediaType.TEXT_XML)
.header(LAST_MODIFIED_PROPERTY, dateFormat.format(new Date()))
.build();
} catch (Exception e) {
Response.serverError().build();
}
return Response.ok().header(LAST_MODIFIED_PROPERTY, dateFormat.format(new Date())).build();
}
}