1 /***
2 * $Id: StoresView.java,v 1.1 2004/11/08 23:15:38 mch Exp $
3 */
4 package org.astrogrid.store.browser;
5
6 import java.io.IOException;
7 import java.net.URLEncoder;
8 import java.util.Enumeration;
9 import java.util.Hashtable;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import org.apache.commons.logging.Log;
13 import org.apache.commons.logging.LogFactory;
14 import org.astrogrid.datacenter.DsaDomHelper;
15 import org.astrogrid.registry.RegistryException;
16 import org.astrogrid.registry.client.RegistryDelegateFactory;
17 import org.astrogrid.registry.client.query.RegistryService;
18 import org.astrogrid.store.browser.Browser;
19 import org.astrogrid.util.DomHelper;
20 import org.w3c.dom.Document;
21 import org.w3c.dom.Element;
22
23 /***
24 * An object that represents the list of stores in the 'navbar'; generates
25 * HTML for the browser servlet
26 */
27 public class StoresView {
28
29 /*** map of store names to uris */
30 Hashtable stores = new Hashtable();
31
32 Browser browser = null;
33
34 protected static final Log log = LogFactory.getLog(Browser.class);
35
36
37 /*** Constructor - populates nav bar for given user */
38 public StoresView(Browser parent) {
39 this.browser = parent;
40
41 stores.put("HomeSpace", parent.getUser().getIvorn());
42
43 stores.put("Twmbarlwm:8080", "myspace:http://twmbarlwm.star.le.ac.uk:8888/astrogrid-mySpace-SNAPSHOT/services/Manager");
44 populateRegisteredStores();
45 }
46
47 /*** Writes out view to response writer */
48 public void writeView(HttpServletRequest request, HttpServletResponse response) throws IOException {
49 response.getWriter().print(
50 "<div id='storesView'>"+
51 "<table border=2 color='#AAAAAA'><tr><td>"+
52 " <table border=0 cellspacing=4>");
53
54 Enumeration storeKey = stores.keys();
55 while (storeKey.hasMoreElements()) {
56 String name = (String) storeKey.nextElement();
57 String uri = (String) stores.get(name);
58
59 response.getWriter().print(
60 " <tr><td align='center'><a href='"+Browser.refRoot+"store="+URLEncoder.encode(uri)+"&storeName="+URLEncoder.encode(name)+"'>"+name+"</a></td></tr>\n"
61 );
62 }
63
64
65 response.getWriter().print(
66 " <tr><td><form action='Browser'>"+
67 "<input type='text' name='store'/>"+
68 "<input type='submit' value='Go'/>"+
69 "</form></td></tr>");
70
71
72 response.getWriter().print(
73 "</table>"+
74 "</td></tr></table>"+
75 "</div>");
76 }
77
78
79 public void populateRegisteredStores() {
80
81 Element[] myspaceResources;
82 try {
83 myspaceResources = getMySpaces();
84 }
85 catch (RegistryException re) {
86 log.error(re);
87 return;
88 }
89
90
91 for (int i = 0; i < myspaceResources.length; i++) {
92 stores.put(DomHelper.getValue(myspaceResources[i], "Title"),
93 DomHelper.getValue(DsaDomHelper.getSingleChildByTagName(myspaceResources[i], "Interface"), "AccessURL"));
94 }
95
96 }
97
98 /*** Queries Registry for myspaces */
99 public Element[] getMySpaces() throws RegistryException {
100 String selectQuery = "<query><selectionSequence>" +
101 "<selection item='searchElements' itemOp='EQ' value='all'/>" +
102 "<selectionOp op='$and$'/>" +
103 "<selectionSequence>"+
104 "<selection item='vr:Identifier/vr:ResourceKey' itemOp='CONTAINS' value='myspace'/>"+
105 "<selectionOp op='OR'/>" +
106 "<selection item='vr:Title' itemOp='CONTAINS' value='myspace'/>"+
107 "</selectionSequence>"+
108 "</selectionSequence></query>";
109
110 RegistryService client = RegistryDelegateFactory.createQuery();
111
112 Document response = client.submitQuery(selectQuery);
113
114 String s = DomHelper.DocumentToString(response);
115
116
117
118
119
120
121
122
123
124
125 return new Element[] {};
126 }
127
128
129 /***
130 *
131 */
132 public static void main(String[] args) throws RegistryException {
133
134 new StoresView(null).getMySpaces();
135 }
136 }