001package org.nuxeo.ecm.platform.forms.layout.export;
002
003import javax.ws.rs.GET;
004import javax.ws.rs.Path;
005import javax.ws.rs.QueryParam;
006import javax.ws.rs.core.Context;
007import javax.ws.rs.core.UriInfo;
008
009import org.apache.commons.lang.StringUtils;
010import org.nuxeo.ecm.platform.forms.layout.api.service.LayoutStore;
011import org.nuxeo.ecm.webengine.model.view.TemplateView;
012import org.nuxeo.runtime.api.Framework;
013
014@Path("layout-manager")
015public class RootResource {
016
017    protected TemplateView getTemplate(String name, UriInfo uriInfo) {
018        String baseURL = uriInfo.getAbsolutePath().toString();
019        if (!baseURL.endsWith("/")) {
020            baseURL += "/";
021        }
022        return new TemplateView(this, name).arg("baseURL", baseURL);
023    }
024
025    @GET
026    public Object doGet(@Context UriInfo uriInfo) {
027        LayoutStore service = Framework.getService(LayoutStore.class);
028        // XXX: use hard coded "jsf" category for now
029        int nbWidgetTypes = service.getWidgetTypeDefinitions("jsf").size();
030        int nbLayoutTypes = service.getLayoutTypeDefinitions("jsf").size();
031        int nbLayouts = service.getLayoutDefinitionNames("jsf").size();
032        return getTemplate("index.ftl", uriInfo).arg("nbWidgetTypes", Integer.valueOf(nbWidgetTypes)).arg("nbLayouts",
033                Integer.valueOf(nbLayouts)).arg("nbLayoutTypes", Integer.valueOf(nbLayoutTypes));
034    }
035
036    @Path("layouts")
037    public Object getLayouts() {
038        // XXX: use hard coded "jsf" category for now
039        return new LayoutResource("jsf");
040    }
041
042    @Path("widget-types")
043    public Object getWidgetTypes(@QueryParam("widgetTypeCategory") String widgetTypeCategory) {
044        if (StringUtils.isBlank(widgetTypeCategory)) {
045            widgetTypeCategory = "jsf";
046        }
047        return new WidgetTypeResource(widgetTypeCategory);
048    }
049
050    @Path("layout-types")
051    public Object getLayoutTypes(@QueryParam("layoutTypeCategory") String layoutTypeCategory) {
052        if (StringUtils.isBlank(layoutTypeCategory)) {
053            layoutTypeCategory = "jsf";
054        }
055        return new LayoutTypeResource(layoutTypeCategory);
056    }
057
058}