Author: chathura
Date: Thu Dec 20 09:06:37 2007
New Revision: 11613

Log:


Added complete database script for derby by combining registry + user manager 
scripts.
Added a separate versions page for displaying versions.
Fixed the restore version link.



Added:
   
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-complete.sql
   
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-registry.sql
      - copied, changed from r11598, 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-script.sql
   
branches/registry/0_1/modules/core/src/main/resources/database-scripts/hsql-registry.sql
   
branches/registry/0_1/modules/core/src/main/resources/database-scripts/mysql-registry.sql
      - copied, changed from r11598, 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/mysql-script.sql
   
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/beans/VersionsBean.java
   branches/registry/0_1/modules/webapps/src/main/webapp/admin/versions.jsp
Removed:
   
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-script.sql
   
branches/registry/0_1/modules/core/src/main/resources/database-scripts/mysql-script.sql
Modified:
   
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/config/RegistryConfiguration.java
   
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/jdbc/hsql/DBUtils.java
   
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/servlet/registry.xml
   
branches/registry/0_1/modules/core/src/test/java/org/wso2/registry/jdbc/JDBCRegistryTest.java
   branches/registry/0_1/modules/webapps/conf/web.xml
   
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
   
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/UIConstants.java
   
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/utils/ResourcesUtil.java
   
branches/registry/0_1/modules/webapps/src/main/webapp/admin/advanced-search.jsp
   
branches/registry/0_1/modules/webapps/src/main/webapp/admin/registry-resources.jsp

Modified: 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/config/RegistryConfiguration.java
==============================================================================
--- 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/config/RegistryConfiguration.java
        (original)
+++ 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/config/RegistryConfiguration.java
        Thu Dec 20 09:06:37 2007
@@ -67,7 +67,7 @@
             }
             if (in == null) {
                 throw new 
RegistryException(Messages.getMessage("inputstream.null",
-                                                                
"org/wso2/servlet/registry.xml"));
+                        "org/wso2/servlet/registry.xml"));
             }
         }
         try {

Modified: 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/jdbc/hsql/DBUtils.java
==============================================================================
--- 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/jdbc/hsql/DBUtils.java
   (original)
+++ 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/jdbc/hsql/DBUtils.java
   Thu Dec 20 09:06:37 2007
@@ -128,13 +128,12 @@
         s.executeUpdate(artifactsTable);
         s.executeUpdate(propertiesTable);
         s.executeUpdate(childrenTable);
-        //s.executeUpdate(tagsTable);
         s.executeUpdate(tagsTable);
         s.executeUpdate(commentsTable);
         s.executeUpdate(ratingsTable);
         s.executeUpdate(logsTable);
 
-        //creating version related tables
+        // creating version related tables
         s.executeUpdate(versionTable);
         s.executeUpdate(dependencyTable);
     }

Modified: 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/servlet/registry.xml
==============================================================================
--- 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/servlet/registry.xml
     (original)
+++ 
branches/registry/0_1/modules/core/src/main/java/org/wso2/registry/servlet/registry.xml
     Thu Dec 20 09:06:37 2007
@@ -1,22 +1,26 @@
 <wso2regsitry>
 
-    <currentConfig>in-memory</currentConfig>
+    <currentConfig>sample</currentConfig>
 
     <dbconfig name="in-memory">
     </dbconfig>
 
-    <dbconfig name="built-in">
+    <dbconfig name="sample">
+        
<url>jdbc:hsqldb:/home/chathura/temp/reghsql/sample-db;shutdown=true</url>
+        <userName>sa</userName>
+        <password></password>
+        <driverName>org.hsqldb.jdbcDriver</driverName>
     </dbconfig>
 
-    <dbconfig name="DB1">
-        <url>url</url>
+    <dbconfig name="registry-connection">
+        <url>db-connection-url</url>
         <userName>userName</userName>
         <password>password</password>
         <driverName>driverName</driverName>
     </dbconfig>
 
-    <dbconfig name="DB2">
-        <dataSource>dataSource</dataSource>
+    <dbconfig name="registry-datasource">
+        <dataSource>dataSourceName</dataSource>
     </dbconfig>
 
 </wso2regsitry>
\ No newline at end of file

Added: 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-complete.sql
==============================================================================
--- (empty file)
+++ 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-complete.sql
   Thu Dec 20 09:06:37 2007
@@ -0,0 +1,89 @@
+CREATE TABLE ARTIFACTS (AID INTEGER GENERATED ALWAYS AS IDENTITY,
+                PATH VARCHAR (500) NOT NULL,
+                MEDIA_TYPE VARCHAR (500),
+                DIRECTORY INTEGER NOT NULL,
+                STATE INTEGER,
+                AUTHOR VARCHAR (500),
+                CREATED_TIME TIMESTAMP,
+                LAST_UPDATER VARCHAR (500),
+                LAST_UPDATED_TIME TIMESTAMP,
+                DESCRIPTION VARCHAR (10000),
+                CONTENT BLOB,
+                PRIMARY KEY (AID),
+                UNIQUE(PATH));
+
+CREATE TABLE PROPERTIES (P_ID INTEGER GENERATED ALWAYS AS IDENTITY,
+                AID INTEGER NOT NULL,
+                PKEY VARCHAR (100) NOT NULL,
+                PVALUE VARCHAR (500) NOT NULL,
+                PRIMARY KEY (P_ID),
+                UNIQUE (AID, PKEY),
+                FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE CHILDREN (CID INTEGER GENERATED ALWAYS AS IDENTITY,
+            PARENT_ID INTEGER NOT NULL,
+            CHILD_ID INTEGER NOT NULL,
+            PRIMARY KEY (CID),
+            UNIQUE (PARENT_ID, CHILD_ID),
+            FOREIGN KEY (PARENT_ID) REFERENCES ARTIFACTS (AID),
+            FOREIGN KEY (CHILD_ID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE TAGS (TN_ID INTEGER GENERATED ALWAYS AS IDENTITY,
+            TAG_NAME VARCHAR (500) NOT NULL,
+            AID INTEGER NOT NULL,
+            USER_ID VARCHAR (20) NOT NULL,
+            TAGGED_TIME TIMESTAMP NOT NULL,
+            PRIMARY KEY (TN_ID),
+            UNIQUE (TAG_NAME, AID, USER_ID),
+            FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE COMMENTS (CM_ID INTEGER GENERATED ALWAYS AS IDENTITY,
+            AID INTEGER NOT NULL,
+            USER_ID VARCHAR (20) NOT NULL,
+            COMMENT_TEXT VARCHAR (500) NOT NULL,
+            COMMENTED_TIME TIMESTAMP NOT NULL,
+            PRIMARY KEY (CM_ID),
+            FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE LOGS (LOG_ID INTEGER GENERATED ALWAYS AS IDENTITY,
+            RID INTEGER,
+            USER_ID VARCHAR (20) NOT NULL,
+            LOGGED_TIME TIMESTAMP NOT NULL,
+            ACTION INTEGER NOT NULL,
+            ACTION_DATA VARCHAR (500),
+            PRIMARY KEY (LOG_ID));
+
+CREATE TABLE RATINGS (R_ID INTEGER GENERATED ALWAYS AS IDENTITY,
+            AID INTEGER NOT NULL,
+            USER_ID VARCHAR (20) NOT NULL,
+            RATING INTEGER NOT NULL,
+            RATED_TIME TIMESTAMP NOT NULL,
+            PRIMARY KEY (R_ID),
+            FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE VERSIONS (
+            AID INTEGER NOT NULL,
+            VN INTEGER NOT NULL,
+            CONTENT BLOB,
+            AUTHOR VARCHAR (500),
+            UPDATED_TIME TIMESTAMP,
+            UNIQUE (AID,VN),
+            FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE DEPENDENCY (
+            AID INTEGER NOT NULL,
+            VN INTEGER NOT NULL,
+            DAID INTEGER NOT NULL,
+            DVN INTEGER NOT NULL,
+            UNIQUE (AID,VN,DAID,DVN),
+            FOREIGN KEY (DAID) REFERENCES ARTIFACTS (AID),
+            FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE UM_USERS (ID VARCHAR(255), USER_NAME VARCHAR(255) NOT NULL 
UNIQUE, PASSWORD VARCHAR(255) NOT NULL, PRIMARY KEY (ID));
+CREATE TABLE UM_USER_ATTRIBUTES (ID VARCHAR(255), ATTR_NAME VARCHAR(255) NOT 
NULL, ATTR_VALUE VARCHAR(255), USER_ID VARCHAR(255), FOREIGN KEY (USER_ID) 
REFERENCES UM_USERS(ID) ON DELETE CASCADE, PRIMARY KEY (ID));
+CREATE TABLE UM_ROLES (ID VARCHAR(255), ROLE_NAME VARCHAR(255) NOT NULL 
UNIQUE, PRIMARY KEY (ID));
+CREATE TABLE UM_ROLE_ATTRIBUTES (ID VARCHAR(255), ATTR_NAME VARCHAR(255) NOT 
NULL, ATTR_VALUE VARCHAR(255), ROLE_ID VARCHAR(255), FOREIGN KEY (ROLE_ID) 
REFERENCES UM_ROLES(ID) ON DELETE CASCADE, PRIMARY KEY (ID));
+CREATE TABLE UM_PERMISSIONS (ID VARCHAR(255), RESOURCE_ID VARCHAR(255) NOT 
NULL, ACTION VARCHAR(255) NOT NULL, PRIMARY KEY (ID));
+CREATE TABLE UM_ROLE_PERMISSIONS (ID VARCHAR(255), PERMISSION_ID VARCHAR(255), 
ROLE_ID VARCHAR(255), IS_ALLOWED SMALLINT NOT NULL, FOREIGN KEY (PERMISSION_ID) 
REFERENCES UM_PERMISSIONS(ID) ON DELETE  CASCADE, FOREIGN KEY (ROLE_ID) 
REFERENCES UM_ROLES(ID) ON DELETE CASCADE, PRIMARY KEY (ID));
+CREATE TABLE UM_USER_PERMISSIONS (ID VARCHAR(255), IS_ALLOWED SMALLINT NOT 
NULL, PERMISSION_ID VARCHAR(255), USER_ID VARCHAR(255), FOREIGN KEY 
(PERMISSION_ID) REFERENCES UM_PERMISSIONS(ID) ON DELETE CASCADE, FOREIGN KEY 
(USER_ID) REFERENCES UM_USERS(ID) ON DELETE CASCADE, PRIMARY KEY (ID));
+CREATE TABLE UM_USER_ROLES (ID VARCHAR(255), ROLE_ID VARCHAR(255), USER_ID 
VARCHAR(255), FOREIGN KEY (ROLE_ID) REFERENCES UM_ROLES(ID) ON DELETE CASCADE, 
FOREIGN KEY (USER_ID) REFERENCES UM_USERS(ID) ON DELETE CASCADE, PRIMARY KEY 
(ID));

Copied: 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-registry.sql
 (from r11598, 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/derby-script.sql)
==============================================================================

Added: 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/hsql-registry.sql
==============================================================================
--- (empty file)
+++ 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/hsql-registry.sql
    Thu Dec 20 09:06:37 2007
@@ -0,0 +1,78 @@
+CREATE TABLE ARTIFACTS (AID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                        PATH VARCHAR (500) NOT NULL,
+                        MEDIA_TYPE VARCHAR (500),
+                        DIRECTORY INTEGER NOT NULL,
+                        STATE INTEGER,
+                        AUTHOR VARCHAR (500),
+                        CREATED_TIME TIMESTAMP,
+                        LAST_UPDATER VARCHAR (500),
+                        LAST_UPDATED_TIME TIMESTAMP,
+                        DESCRIPTION VARCHAR (500),
+                        CONTENT BINARY,
+                        PRIMARY KEY (AID),
+                        UNIQUE(PATH));
+
+CREATE TABLE PROPERTIES (P_ID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                            AID INTEGER NOT NULL,
+                            PKEY VARCHAR (100) NOT NULL,
+                            PVALUE VARCHAR (500) NOT NULL,
+                            PRIMARY KEY (P_ID),
+                            UNIQUE (AID, PKEY),
+                            FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE CHILDREN (CID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                        PARENT_ID INTEGER NOT NULL,
+                        CHILD_ID INTEGER NOT NULL,
+                        PRIMARY KEY (CID),
+                        UNIQUE (PARENT_ID, CHILD_ID),
+                        FOREIGN KEY (PARENT_ID) REFERENCES ARTIFACTS (AID),
+                        FOREIGN KEY (CHILD_ID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE TAGS (TN_ID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                    TAG_NAME VARCHAR (500) NOT NULL,
+                    AID INTEGER NOT NULL,
+                    USER_ID VARCHAR (20) NOT NULL,
+                    TAGGED_TIME TIMESTAMP NOT NULL,
+                    PRIMARY KEY (TN_ID),
+                    UNIQUE (TAG_NAME, AID, USER_ID),
+                    FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE COMMENTS (CM_ID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                        AID INTEGER NOT NULL,
+                        USER_ID VARCHAR (20) NOT NULL,
+                        COMMENT_TEXT VARCHAR (500) NOT NULL,
+                        COMMENTED_TIME TIMESTAMP NOT NULL,
+                        PRIMARY KEY (CM_ID),
+                        FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE LOGS (LOG_ID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                    RID INTEGER,
+                    USER_ID VARCHAR (20) NOT NULL,
+                    LOGGED_TIME TIMESTAMP NOT NULL,
+                    ACTION INTEGER NOT NULL,
+                    ACTION_DATA VARCHAR (500),
+                    PRIMARY KEY (LOG_ID));
+
+CREATE TABLE RATINGS (R_ID INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                        AID INTEGER NOT NULL,
+                        USER_ID VARCHAR (20) NOT NULL,
+                        RATING INTEGER NOT NULL,
+                        RATED_TIME TIMESTAMP NOT NULL,
+                        PRIMARY KEY (R_ID),
+                        FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE VERSIONS (AID INTEGER NOT NULL,
+                           VN INTEGER NOT NULL,
+                           CONTENT BINARY,
+                           AUTHOR VARCHAR (500),
+                           UPDATED_TIME TIMESTAMP,
+                           UNIQUE (AID,VN),
+                           FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
+
+CREATE TABLE DEPENDENCY (AID INTEGER NOT NULL,
+                          VN INTEGER NOT NULL,
+                          DAID INTEGER NOT NULL,
+                          DVN INTEGER NOT NULL,
+                          UNIQUE (AID,VN,DAID,DVN),
+                          FOREIGN KEY (DAID) REFERENCES ARTIFACTS (AID),
+                          FOREIGN KEY (AID) REFERENCES ARTIFACTS (AID));
\ No newline at end of file

Copied: 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/mysql-registry.sql
 (from r11598, 
branches/registry/0_1/modules/core/src/main/resources/database-scripts/mysql-script.sql)
==============================================================================

Modified: 
branches/registry/0_1/modules/core/src/test/java/org/wso2/registry/jdbc/JDBCRegistryTest.java
==============================================================================
--- 
branches/registry/0_1/modules/core/src/test/java/org/wso2/registry/jdbc/JDBCRegistryTest.java
       (original)
+++ 
branches/registry/0_1/modules/core/src/test/java/org/wso2/registry/jdbc/JDBCRegistryTest.java
       Thu Dec 20 09:06:37 2007
@@ -21,11 +21,16 @@
 
 import junit.framework.TestCase;
 import org.wso2.registry.*;
+import org.wso2.registry.secure.HSQLDBInitializer;
+import org.wso2.registry.jdbc.utils.RegistryDataSource;
+import org.wso2.registry.jdbc.hsql.DBUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Properties;
+import java.sql.SQLException;
+import java.sql.Connection;
 
 public class JDBCRegistryTest extends TestCase {
 
@@ -47,6 +52,25 @@
         }
     }
 
+    public void dummyTest() {
+
+        try {
+            RegistryDataSource dataSource = new RegistryDataSource(
+                    
"jdbc:hsqldb:file:/home/chathura/temp/reghsql/sample-db;shutdown=true", 
"org.hsqldb.jdbcDriver", "sa", "");
+
+            DBUtils dbUtils = new DBUtils();
+            Connection conn = dataSource.getConnection();
+            dbUtils.initializeDatabase(conn);
+            conn.close();
+
+            HSQLDBInitializer dbInitializer = new HSQLDBInitializer();
+            dbInitializer.createHSQLTables(dataSource);
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     public void testFlatResourceHandling() {
         Resource r1 = new Resource();
         r1.setAuthorUserName("Chathura");

Modified: branches/registry/0_1/modules/webapps/conf/web.xml
==============================================================================
--- branches/registry/0_1/modules/webapps/conf/web.xml  (original)
+++ branches/registry/0_1/modules/webapps/conf/web.xml  Thu Dec 20 09:06:37 2007
@@ -43,6 +43,10 @@
         <servlet-name>WebServlet</servlet-name>
         <url-pattern>/resources/*</url-pattern>
     </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>WebServlet</servlet-name>
+        <url-pattern>/versions/*</url-pattern>
+    </servlet-mapping>
 
     <welcome-file-list>
       <welcome-file>admin/index.jsp</welcome-file>

Modified: 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
==============================================================================
--- 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
    (original)
+++ 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
    Thu Dec 20 09:06:37 2007
@@ -25,6 +25,7 @@
 import org.wso2.registry.servlet.Utils;
 import org.wso2.registry.web.actions.*;
 import org.wso2.registry.web.beans.AdminBean;
+import org.wso2.registry.web.beans.VersionsBean;
 import org.wso2.registry.web.utils.AdminUtil;
 import org.wso2.registry.web.utils.TagUtil;
 import org.wso2.registry.web.utils.ResourcesUtil;
@@ -460,6 +461,36 @@
 
             forwardToResources(request, response, path);
 
+        } else if (controlPart.startsWith(RegistryConstants.PATH_SEPARATOR + 
UIConstants.VERSIONS_PATH)) {
+
+            if (uri.equals("") || uri.endsWith(UIConstants.VERSIONS_PATH + 
RegistryConstants.PATH_SEPARATOR)) {
+                path = RegistryConstants.ROOT_PATH;
+
+            } else {
+                path = uri.substring((contextRoot + 
RegistryConstants.PATH_SEPARATOR + UIConstants.VERSIONS_PATH).
+                        length(), uri.length());
+            }
+
+            // if user is browsing an old version of the resource, we append 
it to the path, so that
+            // the backend registry gives the details of the version
+            String qPart = request.getQueryString();
+            if (qPart != null && qPart.startsWith("v")) {
+                path = path + "?" + qPart;
+            }
+
+            VersionsBean versionsBean = null;
+            try {
+                versionsBean = ResourcesUtil.getVersions(request, path);
+            } catch (RegistryException e) {
+                request.getSession().setAttribute(UIConstants.ERROR_MESSAGE, 
e.getMessage());
+                request.getRequestDispatcher(UIConstants.ERROR_JSP);
+                return;
+            }
+
+            request.getSession().setAttribute(UIConstants.VERSIONS_BEAN, 
versionsBean);
+            
request.getRequestDispatcher(UIConstants.VERSIONS_JSP).forward(request, 
response);
+            return;
+
         } else if (controlPart.startsWith(RegistryConstants.PATH_SEPARATOR + 
UIConstants.RESOURCES_PATH)) {
 
             if (uri.equals("") || uri.endsWith(UIConstants.RESOURCES_PATH + 
RegistryConstants.PATH_SEPARATOR)) {
@@ -485,7 +516,7 @@
                 request.getRequestDispatcher(UIConstants.ERROR_JSP);
                 return;
             }
-            
+
             if (resource == null) {
                 request.getSession().setAttribute(UIConstants.ERROR_MESSAGE, 
"404 Not Found");
                 request.getRequestDispatcher(UIConstants.ERROR_JSP);
@@ -696,6 +727,17 @@
                 }
 
                 response.sendRedirect("/wso2registry/web/");
+
+            } else if (command.equals("/restore")) {
+
+                try {
+                    ResourcesUtil.restoreVersion(request);
+                } catch (RegistryException e) {
+                    setErrorMessage(request, e.getMessage());
+                    forwardToResources(request, response, path);
+                }
+
+                response.sendRedirect("/wso2registry/web" + path);
             }
 
         }

Modified: 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/UIConstants.java
==============================================================================
--- 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/UIConstants.java
  (original)
+++ 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/UIConstants.java
  Thu Dec 20 09:06:37 2007
@@ -26,10 +26,12 @@
     public static final String ADVANCED_SEARCH_BEAN = "advanced_search";
     public static final String SEARCH_BEAN = "search";
     public static final String USER_BEAN = "userBean";
+    public static final String VERSIONS_BEAN = "versions.bean";
     public static final String AJAX_RATING_BEAN = "ajaxRating";
     public static final String AJAX_DESCRIPTION_STRING = "ajaxDesc";
 
     public static final String RESOURCES_PATH = "resources";
+    public static final String VERSIONS_PATH = "versions";
     public static final String WEB_PATH = "web";
     public static final String SYSTEM_PATH = "system";
     public static final String PATH_ATTR = "path";
@@ -48,6 +50,7 @@
     public static final String ADVANCED_SEARCH_JSP = 
"/admin/advanced-search.jsp";
     public static final String SEARCH_JSP = "/admin/search.jsp";
     public static final String USER_JSP = "/admin/user.jsp";
+    public static final String VERSIONS_JSP = "/admin/versions.jsp";
     public static final String AJAX_RATING_JSP = "/admin/ajax_rating.jsp";
     public static final String AJAX_DESCRIPTION_JSP = "/admin/ajax_desc.jsp";
     public static final String RESOURCE_DETAILS_JSP = 
"/admin/resources_details.jsp";

Added: 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/beans/VersionsBean.java
==============================================================================
--- (empty file)
+++ 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/beans/VersionsBean.java
   Thu Dec 20 09:06:37 2007
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.wso2.registry.web.beans;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class VersionsBean {
+
+    private List versionPaths = new ArrayList();
+
+    public List getVersionPaths() {
+        return versionPaths;
+    }
+
+    public void setVersionPaths(List versionPaths) {
+        this.versionPaths = versionPaths;
+    }
+}

Modified: 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/utils/ResourcesUtil.java
==============================================================================
--- 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/utils/ResourcesUtil.java
  (original)
+++ 
branches/registry/0_1/modules/webapps/src/main/java/org/wso2/registry/web/utils/ResourcesUtil.java
  Thu Dec 20 09:06:37 2007
@@ -19,6 +19,8 @@
 import org.wso2.registry.secure.SecureRegistry;
 import org.wso2.registry.RegistryException;
 import org.wso2.registry.Resource;
+import org.wso2.registry.web.beans.VersionsBean;
+import org.wso2.registry.web.actions.utils.VersionPath;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -34,4 +36,40 @@
             return null;
         }
     }
+
+    public static VersionsBean getVersions(HttpServletRequest request, String 
path)
+            throws RegistryException {
+
+        SecureRegistry secureRegistry = CommonUtil.getUserRegistry(request);
+
+        VersionsBean versionsBean = new VersionsBean();
+
+        String[] versions = secureRegistry.getVersions(path);
+        for (int i = 0; i < versions.length; i++) {
+            VersionPath versionPath = new VersionPath();
+            versionPath.setCompleteVersionPath(versions[i]);
+
+            if (versions[i].indexOf("?v=") > 0) {
+                long versionNumber = new 
Long(versions[i].split("\\?v=")[1]).longValue();
+                versionPath.setVersionNumber(versionNumber);
+            }
+
+            Resource versionResource = secureRegistry.get(versions[i]);
+            if (versionResource != null) {
+                
versionPath.setUpdater(versionResource.getLastUpdaterUserName());
+                versionPath.setUpdatedOn(versionResource.getLastModified());
+            }
+
+            versionsBean.getVersionPaths().add(versionPath);
+        }
+
+        return versionsBean;
+    }
+
+    public static void restoreVersion(HttpServletRequest request) throws 
RegistryException {
+
+        SecureRegistry secureRegistry = CommonUtil.getUserRegistry(request);
+        String versionPath = request.getParameter("versionPath");
+        secureRegistry.restoreVersion(versionPath);
+    }
 }

Modified: 
branches/registry/0_1/modules/webapps/src/main/webapp/admin/advanced-search.jsp
==============================================================================
--- 
branches/registry/0_1/modules/webapps/src/main/webapp/admin/advanced-search.jsp 
    (original)
+++ 
branches/registry/0_1/modules/webapps/src/main/webapp/admin/advanced-search.jsp 
    Thu Dec 20 09:06:37 2007
@@ -46,18 +46,18 @@
                </div>
                <div class="box1-mid" id="userExpanded">
                <form id="advancedSearchForm" name="advancedSearch" 
onsubmit="return true;" action="/wso2registry/system/search/advanced" 
method="get">
-                       <table cellpadding="0" cellspacing="0" border="0" 
class="form-table">
-                               <tr>
-                                       <td class="leftColumn">Search For</td>
-                                       <td>
-                                               <select name="" id="searchFor" 
onchange="showHideSearch();">
-                                                       <option 
value="0">Resource</option>
-                                                       <option 
value="1">Comments</option>
-                                               </select>
-                       
-                                       </td>
-                               </tr>
-                       </table>
+                       <%--<table cellpadding="0" cellspacing="0" border="0" 
class="form-table">--%>
+                               <%--<tr>--%>
+                                       <%--<td class="leftColumn">Search 
For</td>--%>
+                                       <%--<td>--%>
+                                               <%--<select name="" 
id="searchFor" onchange="showHideSearch();">--%>
+                                                       <%--<option 
value="0">Resource</option>--%>
+                                                       <%--<option 
value="1">Comments</option>--%>
+                                               <%--</select>--%>
+                       
+                                       <%--</td>--%>
+                               <%--</tr>--%>
+                       <%--</table>--%>
                
                
                        

Modified: 
branches/registry/0_1/modules/webapps/src/main/webapp/admin/registry-resources.jsp
==============================================================================
--- 
branches/registry/0_1/modules/webapps/src/main/webapp/admin/registry-resources.jsp
  (original)
+++ 
branches/registry/0_1/modules/webapps/src/main/webapp/admin/registry-resources.jsp
  Thu Dec 20 09:06:37 2007
@@ -554,7 +554,7 @@
     </table>
 </div>
 <div class="box2-mid" id="versionsMinimized">
-    Expand to view details
+    <a href="/wso2registry/versions<%=details.getPath()%>">View versions</a>
 </div>
 <div class="box2-mid" id="versionsExpanded" style="display:none;">
 

Added: branches/registry/0_1/modules/webapps/src/main/webapp/admin/versions.jsp
==============================================================================
--- (empty file)
+++ branches/registry/0_1/modules/webapps/src/main/webapp/admin/versions.jsp    
Thu Dec 20 09:06:37 2007
@@ -0,0 +1,43 @@
+<%@ page import="org.wso2.registry.web.actions.utils.VersionPath" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.util.List" %>
+<%@ page import="org.wso2.registry.web.UIConstants" %>
+<%@ page import="org.wso2.registry.web.beans.VersionsBean" %>
+<%--
+  Created by IntelliJ IDEA.
+  User: chathura
+  Date: Dec 20, 2007
+  Time: 11:45:43 AM
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head><title>Simple jsp page</title></head>
+
+<body>
+
+<div class="box2-mid" id="versionsList">
+
+    <%
+        VersionsBean versionBean = (VersionsBean) 
request.getSession().getAttribute(UIConstants.VERSIONS_BEAN);
+        Iterator iVersions = versionBean.getVersionPaths().iterator();
+        while (iVersions.hasNext()) {
+            VersionPath versionPath = (VersionPath) iVersions.next();
+    %>
+
+    <h3>Version <%=versionPath.getVersionNumber()%></h3>
+
+    <strong style="color:#696969;">Last Modified:</strong><br>
+    <%=versionPath.getUpdatedOn().toString()%>
+    <br><strong style="color:#696969;">By:</strong> 
<%=versionPath.getUpdater()%>
+    <br>
+    <div style="margin-bottom:10px;">
+        <a href="/wso2registry/web<%=versionPath.getCompleteVersionPath()%>" 
title="Details">Details <img src="/wso2registry/admin/images/icon-details.gif" 
border="0" hspace="3" /></a>
+        <a 
href="/wso2registry/system/restore?versionPath=<%=versionPath.getCompleteVersionPath()%>"
 title="Restore" style="margin-left:5px;">Restore <img 
src="/wso2registry/admin/images/icon-restore.gif" border="0" /></a>
+    </div>
+
+
+    <% } %>
+</div>
+</body>
+</html>
\ No newline at end of file

_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev

Reply via email to