Changeset 1521 for MDService2


Ignore:
Timestamp:
09/06/11 13:04:37 (13 years ago)
Author:
gaba
Message:
 
Location:
MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/action/GenericAction.java

    r1520 r1521  
    11package eu.clarin.cmdi.mdservice.action;
    22
     3import java.io.ByteArrayInputStream;
    34import java.io.IOException;
    45import java.io.InputStream;
     6import java.io.StringWriter;
    57import java.util.HashMap;
    68import java.util.Map;
    79import javax.servlet.http.HttpServletRequest;
     10import javax.xml.transform.TransformerFactory;
     11import javax.xml.transform.dom.DOMSource;
     12import javax.xml.transform.stream.StreamResult;
    813
    914import org.apache.log4j.Logger;
    1015import org.apache.struts2.interceptor.ServletRequestAware;
     16import org.w3c.dom.Document;
     17import org.w3c.dom.Node;
    1118
    1219import com.opensymphony.xwork2.ActionSupport;
    1320
    1421import eu.clarin.cmdi.mdservice.internal.Cache;
     22import eu.clarin.cmdi.mdservice.internal.Helpers;
    1523import eu.clarin.cmdi.mdservice.internal.MDTransformer;
    1624import eu.clarin.cmdi.mdservice.internal.NoStylesheetException;
     
    7987                 }
    8088                 return this.diagnostics;
     89               
    8190         }
    8291         
     
    229238        protected void loadParams() {
    230239                params = getServletRequest().getParameterMap();
     240               
     241                // add fullformat
     242                String[] str = new String[1];
     243                str[0] = getFullFormat();
     244                params.put("fullformat", str);//getFullFormat());
    231245        }
    232246
     
    245259        public String getParam(String key) {
    246260                String v = "";
    247                 if (!(params.get(key)==null)) v=(String)params.get(key)[0];
     261                if (key.equals("q")){
     262                        if (params.get(key)==null){
     263                                v =  getQ();
     264                        } else {
     265                                v=(String)params.get(key)[0];
     266                        }
     267                }else if (key.equals("format")){
     268                        if (params.get(key)==null){
     269                                v =  getFormat();
     270                        } else {
     271                                v=(String)params.get(key)[0];
     272                        }
     273                } else {
     274                        if (!(params.get(key)==null)) v=(String)params.get(key)[0];
     275                }
    248276                return v;
    249277        }
     
    320348        }
    321349       
    322         public HashMap<String,String> createTransformerParams(){
    323                
    324                 HashMap<String,String> hm = new HashMap<String,String>();
    325                
    326             if (getFullFormat() != null){
     350        public Map<String,String> createTransformerParams(){
     351               
     352                Map<String,String> hm = null;
     353               
     354                return hm;
     355               
     356                //new HashMap<String,String[]>();
     357               
     358            /*if (getFullFormat() != null){
    327359                        hm.put("format", getFullFormat());
    328360            }
    329             /*
     361           
    330362                if (getColumns() != null){
    331363                        hm.put("cols", getColumns());
     
    350382                //}
    351383        */
    352                 return hm;
     384                //return hm;
    353385               
    354386        }
     
    403435                }
    404436                       
     437                // add diagnostics
     438                if (getDiagnostics().Exists()){
     439                        Document doc ;
     440                        Node r_element;
     441                        // fatal error
     442                        //TODO getDiagnostics().Exists("fatal");
     443                        if (sourceStream == null){
     444                                //TODO rootelemname ???
     445                                doc = Helpers.createDocument("rootelemname");
     446                                r_element = doc.getFirstChild();
     447                        } else {
     448                                doc = Helpers.getDocument(sourceStream);
     449                                //TODO tagname by class
     450                                r_element=  doc.getElementsByTagName("searchRetrieveResponse").item(0);
     451                        }
     452                       
     453                        Document ddoc = getDiagnostics().buildXMLDocument();
     454                        Node d_element=  ddoc.getElementsByTagName("diagnostics").item(0);
     455                        doc.adoptNode(d_element);
     456                        r_element.appendChild(d_element);
     457                        DOMSource source = new DOMSource(doc);   
     458                        StringWriter xmlAsWriter = new StringWriter();   
     459                        StreamResult result = new StreamResult(xmlAsWriter);   
     460                        TransformerFactory.newInstance().newTransformer().transform(source, result);
     461                        this.setSourceStream(new ByteArrayInputStream(xmlAsWriter.toString().getBytes("UTF-8")));
     462                }
     463               
    405464                if (getFormat().equals("xml")) {                       
    406465                        resultStream = sourceStream;   
     
    411470                        transformer.setSrcFile(getTargetProxy().getTargetRequest());
    412471                        transformer.setParams(createTransformerParams());
     472                        //transformer.setParams(getParams());
    413473                        // here the transformation is invoked
    414474                        resultStream = transformer.transformXML(sourceStream);
    415475                }
    416476               
     477                //TODO
    417478                log.debug(getActionkey() + " success:" + (resultStream!=null));
     479               
     480               
    418481        }
    419482
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/action/GenericProxyAction.java

    r1512 r1521  
    407407        }
    408408       
     409                /*
    409410        public HashMap<String,String> createTransformerParams(){
    410411               
     
    439440               
    440441        }
    441        
     442        */
    442443        /**
    443444         * This is the work-horse function.
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/action/RepoAction.java

    r1512 r1521  
    1111import java.net.URISyntaxException;
    1212import java.net.URL;
     13import java.util.Arrays;
     14import java.util.Collections;
    1315import java.util.HashMap;
     16import java.util.Iterator;
     17import java.util.Map;
     18import java.util.Set;
     19import java.util.Map.Entry;
    1420
    1521import javax.servlet.http.HttpServletRequest;
     
    7581        protected URL base_url ;
    7682
    77        
     83        private static final Map<String, String> xsl_map;
     84    static {
     85        Map<String, String> aMap = new HashMap<String,String>();
     86        aMap.put("fullformat","format");
     87        aMap.put("columns", "cols");
     88        aMap.put("maximumItems","maximumItems");
     89        aMap.put("startItem", "startItem");
     90        aMap.put("lang","lang");
     91        aMap.put("q", "q");
     92        aMap.put("repository","repository_name");
     93        //aMap.put("repository_type", "repository_type");
     94        xsl_map = Collections.unmodifiableMap(aMap);
     95    }
     96 
     97
    7898
    7999        /**
     
    89109                            case PAZPAR:
    90110                                setTargetProxy(new Pz2Proxy());
     111                                return;
    91112                            case SRU:
    92113                                setTargetProxy(new SRUProxy());
     114                                return;
    93115                            case MD:
    94116                                setTargetProxy(new MDRepoProxy());
     117                                return;
    95118                            default:
    96119                                getDiagnostics().Add(Diagnostic.MANDATORY_NOTSUPPLIED, "repository", "repository=" + getRepository() );
     
    258281         
    259282               
    260         public HashMap<String,String> createTransformerParams(){
     283         @Override
     284        public Map<String,String> createTransformerParams(){
    261285               
     286                Map<String, String> map = new HashMap<String, String>();
     287
     288                Set<Entry<String, String[]>> set = getParams().entrySet();
     289                Iterator<Entry<String, String[]>> i = set.iterator();
     290
     291            while(i.hasNext()){
     292              Map.Entry<String,String[]> e = (Map.Entry<String,String[]>)i.next();
     293              if (xsl_map.containsKey((String)e.getKey())) {
     294                  map.put(xsl_map.get((String)e.getKey()), (String)e.getValue()[0]);
     295              }
     296             
     297            }
     298            return map;
     299            /*
    262300                HashMap<String,String> hm = new HashMap<String,String>();
    263301               
     
    288326       
    289327                return hm;
    290                
     328                */
    291329        }
    292330       
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/action/SRUAction.java

    r1512 r1521  
    2929
    3030import eu.clarin.cmdi.mdservice.internal.Cache;
     31import eu.clarin.cmdi.mdservice.internal.Helpers;
    3132
    3233
     
    402403        }
    403404
    404          public static Document newDocumentFromInputStream(InputStream in) {
    405                     DocumentBuilderFactory factory = null;
    406                     DocumentBuilder builder = null;
    407                     Document ret = null;
    408 
    409                     try {
    410                       factory = DocumentBuilderFactory.newInstance();
    411                       builder = factory.newDocumentBuilder();
    412                     } catch (ParserConfigurationException e) {
    413                       e.printStackTrace();
    414                     }
    415 
    416                     try {
    417                       ret = builder.parse(new InputSource(in));
    418                     } catch (SAXException e) {
    419                       e.printStackTrace();
    420                     } catch (IOException e) {
    421                       e.printStackTrace();
    422                     }
    423                     return ret;
    424                   }
    425 
     405       
    426406
    427407        public void postprocess() throws TransformerConfigurationException, UnsupportedEncodingException, ParserConfigurationException, TransformerException, TransformerFactoryConfigurationError{
     
    443423                // add diagnostics
    444424                if (getDiagnostics().Exists()){
    445                         Document doc = newDocumentFromInputStream(this.getResultStream());
     425                        Document doc = Helpers.getDocument(this.getResultStream());
    446426                        Node r_element=  doc.getElementsByTagName("searchRetrieveResponse").item(0);
    447427                        Document ddoc = getDiagnostics().buildXMLDocument();
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/internal/Helpers.java

    r1513 r1521  
    1919
    2020import org.w3c.dom.Document;
     21import org.w3c.dom.Element;
     22import org.xml.sax.InputSource;
    2123import org.xml.sax.SAXException;
    2224
     
    9294                return doc;
    9395        }
     96
    9497       
    9598        public static String getDocumentData(InputStream is, String expression){
     
    109112                return data;
    110113               
     114        }
     115        public static Document createDocument(String rootelemname){
     116                DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
     117        DocumentBuilder docBuilder;
     118        Document doc = null;
     119                try {
     120                        docBuilder = docFactory.newDocumentBuilder();
     121                        doc = docBuilder.newDocument();
     122                        // append root tag <index >
     123                        Element root = (Element) doc.createElement(rootelemname);
     124                        doc.appendChild(root);
     125                } catch (Exception e){
     126                       
     127                }
     128                return doc;
    111129        }
    112130        /*
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/internal/MDTransformer.java

    r1513 r1521  
    1919import java.util.Map;
    2020import java.util.Set;
     21import java.util.Map.Entry;
    2122
    2223import javax.xml.transform.Transformer;
     
    5253       
    5354        private URL srcFile ;
    54         private HashMap<String,String> params;
     55        private Map<String, String> params;
    5556               
    5657        // don't use singleton!! Bad things happen
     
    7778         * @return
    7879         */
    79         public void setParams(HashMap<String,String> params){
    80                 this.params = params;
    81         }
    82        
    83        
    84         public HashMap<String,String> getParams(){
     80        public void setParams(Map<String, String> map){
     81                this.params = map;
     82        }
     83       
     84       
     85        public Map<String,String> getParams(){
    8586                return this.params;
    8687        }
     
    140141        public void SetTransformerParameters(Transformer transformer){
    141142               
    142                 Set<Map.Entry<String,String>> set = params.entrySet();
    143                 Iterator<Map.Entry<String,String>> i = set.iterator();
     143                Set<Entry<String, String>> set = params.entrySet();
     144                Iterator<Entry<String, String>> i = set.iterator();
    144145
    145146            while(i.hasNext()){
  • MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/proxy/RepoProxy.java

    r1515 r1521  
    1010import java.net.URL;
    1111import java.util.HashMap;
     12import java.util.Map;
    1213import java.io.ByteArrayInputStream;
    1314
     
    7980        }
    8081       
     82        public Map<String,String[]> getParams() {
     83                return getSourceAction().getParams();
     84        }
     85       
    8186        public void checkParams() {
    8287                // required Params
     88                // check and set defaults
     89                if (WorkspaceProfile.getRepositoryPath(getParam("repository")) == null) {
     90                        getSourceAction().getDiagnostics().Add(Diagnostic.UNSUPPORTED_PARAMETERVALUE, "repository");
     91                }
    8392                if (getParam("repository")=="") {
    8493                        getSourceAction().getDiagnostics().Add(Diagnostic.MANDATORY_NOTSUPPLIED, "repository");
Note: See TracChangeset for help on using the changeset viewer.