source: MDService2/branches/MDService_simple3/src/eu/clarin/cmdi/mdservice/model/Repositories.java @ 1833

Last change on this file since 1833 was 1833, checked in by gaba, 12 years ago

old imports removed

File size: 6.0 KB
Line 
1package eu.clarin.cmdi.mdservice.model;
2
3import java.io.BufferedInputStream;
4import java.io.ByteArrayInputStream;
5import java.io.File;
6import java.io.FileInputStream;
7import java.io.FileWriter;
8import java.io.IOException;
9import java.io.InputStream;
10import java.io.StringWriter;
11import java.io.UnsupportedEncodingException;
12import java.net.URL;
13import java.text.DateFormat;
14import java.text.SimpleDateFormat;
15import java.util.Date;
16import java.util.HashMap;
17
18import javax.xml.namespace.QName;
19import javax.xml.parsers.DocumentBuilder;
20import javax.xml.parsers.DocumentBuilderFactory;
21import javax.xml.parsers.ParserConfigurationException;
22import javax.xml.transform.OutputKeys;
23import javax.xml.transform.Transformer;
24import javax.xml.transform.TransformerConfigurationException;
25import javax.xml.transform.TransformerException;
26import javax.xml.transform.TransformerFactory;
27import javax.xml.transform.TransformerFactoryConfigurationError;
28import javax.xml.transform.dom.DOMSource;
29import javax.xml.transform.stream.StreamResult;
30import javax.xml.xpath.XPath;
31import javax.xml.xpath.XPathConstants;
32import javax.xml.xpath.XPathExpression;
33import javax.xml.xpath.XPathExpressionException;
34import javax.xml.xpath.XPathFactory;
35
36import org.w3c.dom.DOMException;
37import org.w3c.dom.Document;
38import org.w3c.dom.Element;
39import org.w3c.dom.Node;
40import org.w3c.dom.NodeList;
41import org.xml.sax.SAXException;
42
43import net.sf.json.JSON;
44import net.sf.json.JSONArray;
45import net.sf.json.JSONObject;
46import net.sf.json.JSONSerializer;
47import net.sf.json.xml.XMLSerializer;
48import eu.clarin.cmdi.mdservice.internal.MDTransformer;
49import eu.clarin.cmdi.mdservice.internal.Utils;
50import eu.clarin.cmdi.mdservice.action.FCSAction;
51import eu.clarin.cmdi.mdservice.action.WorkspaceAction;
52import eu.clarin.cmdi.mdservice.internal.NoStylesheetException;
53
54/**
55 
56 */
57
58
59
60public class Repositories{     
61
62        private static Repositories singleton;
63        private static NodeList repositories_nodelist;
64       
65
66        public static enum RepositoryType
67        {
68                MD, SRU, PAZPAR, FCS, FCSRESOURCE, NOVALUE;
69               
70                public static RepositoryType toRepositoryType(String str)
71            {
72                try {
73                    return valueOf(str.replace(".", "").toUpperCase());
74                } 
75                catch (Exception ex) {
76                    return NOVALUE;
77                }
78            }   
79        }
80       
81        public NodeList getRepositoriesNodeList(){
82                return  repositories_nodelist;
83        }
84       
85        public Repositories() {
86                if (repositories_nodelist == null){
87                        Init();
88                }
89        }
90       
91       
92        public static Repositories getRepositories() {
93                if (singleton == null) {
94                        singleton = new Repositories();
95                } 
96                return singleton;
97        }
98       
99        public void Init(){
100                WorkspaceProfile wsp = WorkspaceProfile.getWorkspaceProfile();
101                try {
102                        repositories_nodelist = (NodeList ) wsp.getWorkspaceData(
103                                        wsp.getXPathExpressionDummy(WorkspaceProfile.XPATH_EXPR_REPOSITORIES, WorkspaceProfile.SERVER),
104                                        XPathConstants.NODESET);
105                } catch (XPathExpressionException e) {
106                        // TODO Auto-generated catch block
107                        e.printStackTrace();
108                }
109        }
110       
111        public Object getDocumentData(Document doc, String xpath_str, QName type) throws XPathExpressionException{
112                XPathFactory factory = XPathFactory.newInstance(); 
113            XPath xpath = factory.newXPath(); 
114            XPathExpression expr;
115                        expr = xpath.compile(xpath_str);
116                        //expression is evaluated with respect to a certain context node which is doc.
117                        Object result = null;
118                        try{
119                        result = expr.evaluate(doc, type);//XPathConstants.NODESET);
120                        } catch(Exception e){
121                               
122                        }
123
124             return result;
125        }
126       
127       
128       
129        public String getRepositoryByIndex(int ind){
130                String repository_name = null;
131               
132                if (repositories_nodelist.getLength() > ind){
133                        repository_name = repositories_nodelist.item(ind).getChildNodes().item(1).getNodeValue();//("name");
134                }
135                return repository_name;
136               
137        }
138       
139        public String getRepositoryType(String repository_name){
140                String typestr = "";
141                boolean selected = false;
142               
143                NodeList chlist = repositories_nodelist.item(0).getChildNodes();
144                for(int i=0;i<chlist.getLength();i++){
145                        Node node = chlist.item(i);
146                        if (node.getNodeName().equals("item")){
147                                NodeList list = node.getChildNodes();
148                                for(int j=0;j<list.getLength();j++){
149                                        if (list.item(j).getNodeName().equals("name") && list.item(j).getTextContent().equals(repository_name)){
150                                                selected = true;
151                                        }
152                                }
153                                if (selected){
154                                        for(int j=0;j<list.getLength();j++){
155                                                if (list.item(j).getNodeName().equals("type")){
156                                                        typestr = list.item(j).getTextContent();
157                                                }
158                                        }
159                                        return typestr;
160                                }
161                        }
162                }
163
164       
165                return (typestr);
166
167        }
168       
169        public String getRepositoryPath(String repository_name){
170                String uri = "";
171                boolean selected = false;
172               
173                NodeList chlist = repositories_nodelist.item(0).getChildNodes();
174                for(int i=0;i<chlist.getLength();i++){
175                        Node node = chlist.item(i);
176                        if (node.getNodeName().equals("item")){
177                                for(int j=0;j<node.getChildNodes().getLength();j++){
178                                        if (node.getChildNodes().item(j).getNodeName().equals("name") && node.getChildNodes().item(j).getTextContent().equals(repository_name)){
179                                                selected = true;
180                                        }
181                                }
182                                if (selected){
183                                        for(int j=0;j<node.getChildNodes().getLength();j++){
184                                                if (node.getChildNodes().item(j).getNodeName().equals("uri")){
185                                                        uri = node.getChildNodes().item(j).getTextContent();
186                                                }
187                                        }
188                                        return uri;
189                                }
190                        }
191                }
192       
193                return (uri);
194
195        }
196       
197        public  Boolean repositoryExists(String repository_name){
198               
199               
200                for(int i=0;i<repositories_nodelist.getLength();i++){
201                        if (repositories_nodelist.item(i).getChildNodes().item(1).getNodeValue().equals(repository_name)){
202                                return true;
203                        }
204                }
205               
206                return false;
207
208        }
209       
210        public InputStream getXMLStream(String extradata) throws TransformerConfigurationException, TransformerException, TransformerFactoryConfigurationError{
211                if (extradata.equals("fcs.resource")){
212                        return FCSRepositories.getFCSRepositories().getXMLStream();
213                }
214                return Utils.document2Stream(repositories_nodelist.item(0));
215               
216        }
217
218        public InputStream getSRUStream(){
219                //if () addFCSRepositories
220               
221                // convert to SRU
222                // SRU nodelist
223                // add FCS to nodelist
224                // convert to xml
225                return null;
226               
227        }
228
229
230       
231}
232
233
Note: See TracBrowser for help on using the repository browser.