/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.smartitengineering.cms.ws.resources.workspace;
import com.smartitengineering.cms.api.factory.SmartContentAPI;
import com.smartitengineering.cms.api.workspace.WorkspaceId;
import com.smartitengineering.util.rest.server.AbstractResource;
import com.smartitengineering.util.rest.server.ServerResourceInjectables;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.commons.lang.StringUtils;
/**
*
* @author imyousuf
*/
public class ReIndexResource extends AbstractResource {
public static final String CONTENTS = "contents", TYPES = "types";
private WorkspaceId workspaceId;
private boolean contentsOnly;
private boolean typesOnly;
public ReIndexResource(ServerResourceInjectables injectables) {
super(injectables);
}
public WorkspaceId getWorkspaceId() {
return workspaceId;
}
public void setWorkspaceId(WorkspaceId workspaceId) {
this.workspaceId = workspaceId;
}
public boolean isContentsOnly() {
return contentsOnly;
}
public void setContentsOnly(boolean contentsOnly) {
this.contentsOnly = contentsOnly;
}
public boolean isTypesOnly() {
return typesOnly;
}
public void setTypesOnly(boolean typesOnly) {
this.typesOnly = typesOnly;
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get() {
return "POST to this resource to perform reindexing in asynchronous thread";
}
@POST
public Response reIndex(@QueryParam("workspaceId") @DefaultValue("") final String workspaceIdStr) {
WorkspaceId cWorkspaceId;
if (workspaceId == null) {
if (StringUtils.isBlank(workspaceIdStr)) {
cWorkspaceId = null;
}
else {
try {
String[] splits = workspaceIdStr.split(":");
String ns = splits[0], name = splits[1];
cWorkspaceId = SmartContentAPI.getInstance().getWorkspaceApi().createWorkspaceId(ns, name);
}
catch (Exception ex) {
cWorkspaceId = null;
}
}
}
else {
cWorkspaceId = workspaceId;
}
if (contentsOnly) {
return reIndexContents(cWorkspaceId);
}
else if (typesOnly) {
return reIndexTypes(cWorkspaceId);
}
else {
SmartContentAPI.getInstance().getContentLoader().reIndex(cWorkspaceId);
SmartContentAPI.getInstance().getContentTypeLoader().reIndexTypes(cWorkspaceId);
Response.ResponseBuilder builder = Response.status(Response.Status.ACCEPTED);
return builder.build();
}
}
private Response reIndexTypes(final WorkspaceId cWorkspaceId) {
SmartContentAPI.getInstance().getContentTypeLoader().reIndexTypes(cWorkspaceId);
Response.ResponseBuilder builder = Response.status(Response.Status.ACCEPTED);
return builder.build();
}
private Response reIndexContents(final WorkspaceId cWorkspaceId) {
SmartContentAPI.getInstance().getContentLoader().reIndex(cWorkspaceId);
Response.ResponseBuilder builder = Response.status(Response.Status.ACCEPTED);
return builder.build();
}
}