From: <jos...@us...> - 2009-12-22 13:07:43
|
Revision: 5660 http://geonetwork.svn.sourceforge.net/geonetwork/?rev=5660&view=rev Author: josegar74 Date: 2009-12-22 13:07:28 +0000 (Tue, 22 Dec 2009) Log Message: ----------- Struts code Added Paths: ----------- sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/GetData.java sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/GUIAction.java sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/SaveAction.java sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/bean/ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/bean/IsoMetadataBean.java sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/form/ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/form/ISOClassificationForm.java Added: sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/GetData.java =================================================================== --- sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/GetData.java (rev 0) +++ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/GetData.java 2009-12-22 13:07:28 UTC (rev 5660) @@ -0,0 +1,129 @@ +package org.geonetwork.web.ebrim; + +import org.geonetwork.domain.ebrim.informationmodel.core.RegistryObject; +import org.geonetwork.domain.csw202.discovery.*; +import org.geonetwork.domain.xsd.QName; +import org.geonetwork.services.ebrim.csw202.CSW202Service; +import org.geonetwork.services.ebrim.csw202.CSW202ServiceException; +import org.geonetwork.services.ebrim.csw202.CSW202Constants; +import org.geonetwork.dao.ebrim.informationmodel.CoreDao; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import javax.servlet.ServletContext; +import java.util.List; +import java.util.ArrayList; + +public class GetData { + + CoreDao coreDao; + ServletContext servletContext; + + /** + * Retrieves a registry object using the iso metadata id + * + * @param isoId + * @return + */ + public RegistryObject retrieveRegistryObjectByIsoId(String isoId) { + List<RegistryObject> roList = coreDao.findRegistryObjectBySlotNameAndValue(isoId, "http://purl.org/dc/elements/1.1/identifier"); + + if (!roList.isEmpty()) { + return roList.get(0); + } else { + return null; + } + } + + /** + * Retrieves DataMetadata and ServiceMetadata registry objects + * + * @return List of registry objects + * @throws CSW202ServiceException + */ + public List<RegistryObject> retrieveMetadata() throws CSW202ServiceException { + GetRecords request = new GetRecords(); + + List<String> namespace = new ArrayList<String>(); + namespace.add("csw=http://www.opengis.net/cat/csw/2.0.2"); + namespace.add("rim=" + CSW202Constants.outputSchema); + namespace.add("ogc=http://www.opengis.net/ogc"); + namespace.add("xsi=http://www.w3.org/2001/XMLSchema-instance"); + request.setNamespace(namespace); + + request.setOutputFormat(CSW202Constants.outputFormatapplicationXml); + request.setResultType(ResultType.results); + request.setOutputSchema(CSW202Constants.outputSchema); + request.setService("CSW"); + request.setVersion(CSW202Constants.version); + + Query query = new Query(); + + ElementSetName esn = new ElementSetName(); + esn.setElementSet(ElementSet.full); + List<String> esnTypeNames = new ArrayList<String>(); + esnTypeNames.add("rim:ExtrinsicObject"); + esn.setTypeNames(esnTypeNames); + query.setElementSetName(esn); + + QueryConstraint queryConstraint = new QueryConstraint(); + String filter = getMetadataFilter(); + queryConstraint.setFilter(filter); + queryConstraint.setVersion("2.0.0"); + + query.setConstraint(queryConstraint); + + List<QName> typeNames = new ArrayList<QName>(); + QName typeName = new QName(); + typeName.setValue("rim:ExtrinsicObject"); + typeNames.add(typeName); + query.setTypeNames(typeNames); + request.setQuery(query); + + WebApplicationContext waco = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + CSW202Service csw202Service = (CSW202Service) waco.getBean("csw202Service"); + + GetRecordsResponse getRecordsResponse = csw202Service.getRecords(request); + + SearchResults searchResults = getRecordsResponse.getSearchResults(); + List<RegistryObject> results = (List<RegistryObject>) searchResults.getOtherRecords(); + + return results; + } + + /** + * Gets the Iso metadata related to a RegistryObject + * + * @param ro + * @return + * @throws CSW202ServiceException + */ + public String getIsoMetadata(RegistryObject ro) throws CSW202ServiceException { + WebApplicationContext waco = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + CSW202Service csw202Service = (CSW202Service) waco.getBean("csw202Service"); + + GetRepositoryItemResponse getRepositoryItemResponse = csw202Service.getRepositoryItem(ro.getId().getValue()); + + return getRepositoryItemResponse.getResponse(); + } + + private String getMetadataFilter() { + return "<ogc:Filter>\n" + + + " <ogc:Or>\n" + + + " <ogc:PropertyIsEqualTo>\n" + + " <ogc:PropertyName>/rim:ExtrinsicObject/@objectType</ogc:PropertyName>\n" + + " <ogc:Literal>urn:ogc:def:ebRIM-ObjectType:OGC:DataMetadata</ogc:Literal>\n" + + " </ogc:PropertyIsEqualTo>\n" + + + " <ogc:PropertyIsEqualTo>\n" + + " <ogc:PropertyName>/rim:ExtrinsicObject/@objectType</ogc:PropertyName>\n" + + " <ogc:Literal>urn:ogc:def:ebRIM-ObjectType:OGC:ServiceMetadata</ogc:Literal>\n" + + " </ogc:PropertyIsEqualTo>\n" + + + " </ogc:Or>\n" + + + "</ogc:Filter>"; + } +} Added: sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/GUIAction.java =================================================================== --- sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/GUIAction.java (rev 0) +++ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/GUIAction.java 2009-12-22 13:07:28 UTC (rev 5660) @@ -0,0 +1,181 @@ +package org.geonetwork.web.ebrim.struts.action; + +import java.util.List; +import java.util.ArrayList; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; + +import org.geonetwork.dao.ebrim.informationmodel.ClassificationDao; +import org.geonetwork.domain.ebrim.informationmodel.classification.ClassificationNode; +import org.geonetwork.domain.ebrim.informationmodel.core.RegistryObject; +import org.geonetwork.domain.csw202.discovery.*; +import org.geonetwork.domain.xsd.QName; +import org.geonetwork.services.ebrim.csw202.CSW202ServiceException; +import org.geonetwork.services.ebrim.csw202.CSW202Constants; +import org.geonetwork.services.ebrim.csw202.CSW202Service; +import org.geonetwork.web.ebrim.struts.bean.IsoMetadataBean; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * + */ +public class GUIAction extends Action { + private final static String SUCCESS = "success"; + + /** + * + * @param mapping The ActionMapping used to select this instance + * @param form The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * @return An ActionForward indicate the resources that will render the response + * @throws Exception if an input/output error or servlet exception occurs + */ + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) + throws Exception { + super.execute(mapping, form, request, response); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + System.out.println("GEONETWORK EBRIM GUI ACTION"); + request.setAttribute("TEST", "test test test"); + + List<RegistryObject> roList = retrieveMetadata(); + List<IsoMetadataBean> isoMetadataBeans = new ArrayList<IsoMetadataBean>(); + + for(RegistryObject ro : roList) { + IsoMetadataBean isoMetadataBean = new IsoMetadataBean(); + isoMetadataBean.setEbRimId(ro.getId().getValue()); + + String isoMetadata = getIsoMetadata(ro); + isoMetadataBean.setTitle(""); + isoMetadataBean.setIsoId("") ; + + isoMetadataBeans.add(isoMetadataBean); + } + + List<ClassificationNode> classificationNodes = classificationDao.loadAllClassificationNode(); + + System.out.println("Found # " + classificationNodes.size() + " Classification Nodes"); + request.setAttribute("ClassificationNodes", classificationNodes); + + + request.setCharacterEncoding("UTF8"); + return mapping.findForward(SUCCESS); + } + + public ClassificationDao classificationDao; + public CSW202Service csw202Service; + + public void setClassificationDao(ClassificationDao classificationDao) { + this.classificationDao = classificationDao; + } + + public void setCSW202Service(CSW202Service csw202Service) { + this.csw202Service = csw202Service; + } + + + /** + * Retrieves DataMetadata and ServiceMetadata registry objects + * + * @return List of registry objects + * @throws org.geonetwork.services.ebrim.csw202.CSW202ServiceException + */ + private List<RegistryObject> retrieveMetadata() throws CSW202ServiceException { + GetRecords request = new GetRecords(); + + List<String> namespace = new ArrayList<String>(); + namespace.add("csw=http://www.opengis.net/cat/csw/2.0.2"); + namespace.add("rim=" + CSW202Constants.outputSchema); + namespace.add("ogc=http://www.opengis.net/ogc"); + namespace.add("xsi=http://www.w3.org/2001/XMLSchema-instance"); + request.setNamespace(namespace); + + request.setOutputFormat(CSW202Constants.outputFormatapplicationXml); + request.setResultType(ResultType.results); + request.setOutputSchema(CSW202Constants.outputSchema); + request.setService("CSW"); + request.setVersion(CSW202Constants.version); + + Query query = new Query(); + + ElementSetName esn = new ElementSetName(); + esn.setElementSet(ElementSet.full); + List<String> esnTypeNames = new ArrayList<String>(); + esnTypeNames.add("rim:ExtrinsicObject"); + esn.setTypeNames(esnTypeNames); + query.setElementSetName(esn); + + QueryConstraint queryConstraint = new QueryConstraint(); + String filter = getMetadataFilter(); + queryConstraint.setFilter(filter); + queryConstraint.setVersion("2.0.0"); + + query.setConstraint(queryConstraint); + + List<QName> typeNames = new ArrayList<QName>(); + QName typeName = new QName(); + typeName.setValue("rim:ExtrinsicObject"); + typeNames.add(typeName); + query.setTypeNames(typeNames); + request.setQuery(query); + + GetRecordsResponse getRecordsResponse = csw202Service.getRecords(request); + + SearchResults searchResults = getRecordsResponse.getSearchResults(); + List<RegistryObject> results = (List<RegistryObject>) searchResults.getOtherRecords(); + + return results; + } + + /** + * Gets the Iso metadata related to a RegistryObject + * + * @param ro + * @return + * @throws CSW202ServiceException + */ + private String getIsoMetadata(RegistryObject ro) throws CSW202ServiceException { + GetRepositoryItemResponse getRepositoryItemResponse = csw202Service.getRepositoryItem(ro.getId().getValue()); + + return getRepositoryItemResponse.getResponse(); + } + + private String getMetadataFilter() { + return "<ogc:Filter>\n" + + + " <ogc:Or>\n" + + + " <ogc:PropertyIsEqualTo>\n" + + " <ogc:PropertyName>/rim:ExtrinsicObject/@objectType</ogc:PropertyName>\n" + + " <ogc:Literal>urn:ogc:def:ebRIM-ObjectType:OGC:DataMetadata</ogc:Literal>\n" + + " </ogc:PropertyIsEqualTo>\n" + + + " <ogc:PropertyIsEqualTo>\n" + + " <ogc:PropertyName>/rim:ExtrinsicObject/@objectType</ogc:PropertyName>\n" + + " <ogc:Literal>urn:ogc:def:ebRIM-ObjectType:OGC:ServiceMetadata</ogc:Literal>\n" + + " </ogc:PropertyIsEqualTo>\n" + + + " </ogc:Or>\n" + + + "</ogc:Filter>"; + } + + +} + Added: sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/SaveAction.java =================================================================== --- sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/SaveAction.java (rev 0) +++ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/action/SaveAction.java 2009-12-22 13:07:28 UTC (rev 5660) @@ -0,0 +1,77 @@ +package org.geonetwork.web.ebrim.struts.action; + +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.Action; +import org.geonetwork.domain.ebrim.informationmodel.classification.Classification; +import org.geonetwork.domain.ebrim.informationmodel.core.RegistryObject; +import org.geonetwork.domain.ebrim.informationmodel.core.datatype.URI; +import org.geonetwork.dao.ebrim.informationmodel.CoreDao; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +public class SaveAction extends Action { + private final static String SUCCESS = "success"; + + /** + * @param mapping The ActionMapping used to select this instance + * @param form The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * @return An ActionForward indicate the resources that will render the response + * @throws Exception if an input/output error or servlet exception occurs + */ + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) + throws Exception { + super.execute(mapping, form, request, response); + + String isoId = request.getParameter("isoId"); + String classificationSchemas = request.getParameter("cs"); + + RegistryObject ro = retrieveRegistryObjectByIsoId(isoId); + if (ro != null) { + String[] classificationSchemasList = classificationSchemas.split(","); + for(String cs: classificationSchemasList) { + Classification classification = new Classification(); + + classification.setClassificationScheme(new URI(cs)); + ro.getClassifications().add(classification); + } + + coreDao.saveRegistryObject(ro); + } else { + System.out.println("Not found registry object for iso metadata id = " + isoId); + } + + request.setCharacterEncoding("UTF8"); + return mapping.findForward(SUCCESS); + } + + /** + * Retrieves a registry object using the iso metadata id + * + * @param isoId + * @return + */ + private RegistryObject retrieveRegistryObjectByIsoId(String isoId) { + List<RegistryObject> roList = coreDao.findRegistryObjectBySlotNameAndValue(isoId, "http://purl.org/dc/elements/1.1/identifier"); + + if (!roList.isEmpty()) { + return roList.get(0); + } else { + return null; + } + } + + public CoreDao coreDao; + + public void setCoreDao(CoreDao coreDao) { + this.coreDao = coreDao; + } +} Added: sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/bean/IsoMetadataBean.java =================================================================== --- sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/bean/IsoMetadataBean.java (rev 0) +++ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/bean/IsoMetadataBean.java 2009-12-22 13:07:28 UTC (rev 5660) @@ -0,0 +1,33 @@ +package org.geonetwork.web.ebrim.struts.bean; + +public class IsoMetadataBean { + public String getIsoId() { + return isoId; + } + + public void setIsoId(String isoId) { + this.isoId = isoId; + } + + public String getEbRimId() { + return ebRimId; + } + + public void setEbRimId(String ebRimId) { + this.ebRimId = ebRimId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + private String isoId; + private String ebRimId; + private String title; + + +} Added: sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/form/ISOClassificationForm.java =================================================================== --- sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/form/ISOClassificationForm.java (rev 0) +++ sandbox/3.0.-OWL/geonetwork-web-ebrim/src/main/java/org/geonetwork/web/struts/form/ISOClassificationForm.java 2009-12-22 13:07:28 UTC (rev 5660) @@ -0,0 +1,26 @@ +package org.geonetwork.web.ebrim.struts.form; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.struts.validator.ValidatorForm; + +public class ISOClassificationForm extends ValidatorForm { + + private String registryObjectId; + private List<String> classificationIDList = new ArrayList<String>(); + + public String getRegistryObjectId() { + return this.registryObjectId; + } + public void setRegistryObjectId(String registryObjectId) { + this.registryObjectId = registryObjectId; + } + public List<String> getClassificationIDList() { + return this.classificationIDList; + } + public void setClassificationIDList(List<String> classificationIDList) { + this.classificationIDList = classificationIDList; + } +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |