dnet-core/dnet-information-service/src/main/java/eu/dnetlib/enabling/inspector/RegistryController.java

71 lines
2.6 KiB
Java

package eu.dnetlib.enabling.inspector;
import java.io.IOException;
import javax.annotation.Resource;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.xml.sax.SAXException;
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
import eu.dnetlib.enabling.tools.CompatResourceIdentifierResolverImpl;
import eu.dnetlib.enabling.tools.OpaqueResource;
import eu.dnetlib.enabling.tools.ResourceIdentifierResolver;
import eu.dnetlib.enabling.tools.StringOpaqueResource;
/**
* This inspector allows the admin to quickly register a profile, like a repository profile.
*
* @author marko
*
*/
@Controller
public class RegistryController extends AbstractInspectorController {
@Resource
private UniqueServiceLocator serviceLocator;
/**
* manages resource identifier mappings with the abstract xmldb namespace (files/collections).
*/
@Resource
private ResourceIdentifierResolver resIdResolver = new CompatResourceIdentifierResolverImpl();
@RequestMapping(value = "/inspector/registerProfile.do", method = RequestMethod.GET)
public void registerProfile() {}
@RequestMapping(value = "/inspector/registerProfile2.do", method = RequestMethod.POST)
public String doRegisterProfile(
@RequestParam(value = "source") final String source,
@RequestParam(value = "valid", required = false) final String valid,
@RequestParam(value = "pending", required = false) final String pending) throws ISRegistryException, XPathExpressionException, SAXException,
IOException, ParserConfigurationException {
String id = null;
if (valid != null && !"".equals(valid)) {
id = serviceLocator.getService(ISRegistryService.class, true).registerProfile(source);
} else {
id = serviceLocator.getService(ISRegistryService.class, true).insertProfileForValidation(resourceTypeFor(source), source);
}
String collection = resIdResolver.getCollectionName(id);
String file = resIdResolver.getFileName(id);
return "redirect:index.do/db/DRIVER/" + collection + "/" + file + "/show";
}
private String resourceTypeFor(final String source) throws XPathExpressionException, SAXException, IOException, ParserConfigurationException {
OpaqueResource resource = new StringOpaqueResource(source);
return resource.getResourceType();
}
}