]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1041]
authorMaria Odea B. Ching <oching@apache.org>
Wed, 18 Feb 2009 02:24:09 +0000 (02:24 +0000)
committerMaria Odea B. Ching <oching@apache.org>
Wed, 18 Feb 2009 02:24:09 +0000 (02:24 +0000)
o show shared basic project info in versions list browse
o fix model not being set in repository browse

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@745359 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css

index 01b805b9ee1769430865c395b7784a7927b99647..c6740b25b1ec33a1a08d023d959c46e47531f1ec 100644 (file)
@@ -318,7 +318,7 @@ public class DefaultRepositoryBrowsing
 
         try
         {
-            dao.getProjectModelDAO().getProjectModel( groupId, artifactId, version );
+            model = dao.getProjectModelDAO().getProjectModel( groupId, artifactId, version );
         }
         catch (ObjectNotFoundException e)
         {
index df1244599d0ca7cfa6324a129d7132b6dbf4279d..2ca3fbec3e6ea7f6ab8b249d5530cc5688ff723f 100644 (file)
@@ -25,10 +25,12 @@ import java.util.List;
 import com.opensymphony.xwork2.ActionContext;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
 import org.apache.maven.archiva.database.browsing.BrowsingResults;
 import org.apache.maven.archiva.database.browsing.RepositoryBrowsing;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
 import org.apache.maven.archiva.security.*;
-import org.apache.maven.archiva.security.ArchivaXworkUser;
 
 /**
  * Browse the repository.
@@ -63,7 +65,9 @@ public class BrowseAction
     private String artifactId;
     
     private String repositoryId;
-
+    
+    private ArchivaProjectModel sharedModel;
+    
     public String browse()
     {
         List<String> selectedRepos = getObservableRepos();
@@ -117,11 +121,88 @@ public class BrowseAction
         {
             return GlobalResults.ACCESS_TO_NO_REPOS;
         }
-
         
         this.results = repoBrowsing.selectArtifactId( getPrincipal(), selectedRepos, groupId, artifactId );
+
+        populateSharedModel();
+        
         return SUCCESS;
     }
+
+    private void populateSharedModel()
+    {
+        sharedModel = new ArchivaProjectModel();
+        sharedModel.setGroupId( groupId );
+        sharedModel.setArtifactId( artifactId );
+        boolean isFirstVersion = true;
+                
+        for( String version :  this.results.getVersions() )
+        {            
+            try
+            {
+                ArchivaProjectModel model =
+                    repoBrowsing.selectVersion( getPrincipal(), getObservableRepos(), groupId, artifactId, version );
+                
+                if( isFirstVersion )
+                {
+                    sharedModel = model;
+                }
+                else
+                {
+                    if ( sharedModel.getPackaging() != null &&
+                        !StringUtils.equalsIgnoreCase( sharedModel.getPackaging(), model.getPackaging() ) )
+                    {
+                        sharedModel.setPackaging( null );
+                    }
+                    
+                    if ( sharedModel.getName() != null &&
+                        !StringUtils.equalsIgnoreCase( sharedModel.getName(), model.getName() ) )
+                    {
+                        sharedModel.setName( "" );
+                    }
+
+                    if ( sharedModel.getDescription() != null &&
+                        !StringUtils.equalsIgnoreCase( sharedModel.getDescription(), model.getDescription() ) )
+                    {
+                        sharedModel.setDescription( null );
+                    }
+
+                    if ( sharedModel.getIssueManagement() != null &&
+                        !StringUtils.equalsIgnoreCase( sharedModel.getIssueManagement().getUrl(), model.getIssueManagement().getUrl() ) )
+                    {
+                        sharedModel.setIssueManagement( null );
+                    }
+
+                    if ( sharedModel.getCiManagement() != null &&
+                        !StringUtils.equalsIgnoreCase( sharedModel.getCiManagement().getUrl(), model.getCiManagement().getUrl() ) )
+                    {
+                        sharedModel.setCiManagement( null );
+                    }
+
+                    if ( sharedModel.getOrganization() != null &&
+                        !StringUtils.equalsIgnoreCase( sharedModel.getOrganization().getName(), model.getOrganization().getName() ) )
+                    {
+                        sharedModel.setOrganization( null );
+                    }
+
+                    if ( sharedModel.getUrl() != null && !StringUtils.equalsIgnoreCase( sharedModel.getUrl(), model.getUrl() ) )
+                    {
+                        sharedModel.setUrl( null );
+                    }
+                }
+                
+                isFirstVersion = false;
+            }
+            catch ( ObjectNotFoundException e )
+            {
+                getLogger().debug( e.getMessage(), e );
+            }
+            catch ( ArchivaDatabaseException e )
+            {
+                getLogger().debug( e.getMessage(), e );
+            }
+        }        
+    }
     
     private String getPrincipal()
     {
@@ -184,4 +265,14 @@ public class BrowseAction
        
        this.repositoryId = repositoryId;
     }
+
+    public ArchivaProjectModel getSharedModel()
+    {
+        return sharedModel;
+    }
+
+    public void setSharedModel( ArchivaProjectModel sharedModel )
+    {
+        this.sharedModel = sharedModel;
+    }
 }
index 2387ea736a76831dcb6b9b8d266f30d5d642c82f..1e483f9862c1860df3fdf3cd4ad15fc969df034d 100644 (file)
 <head>
   <title>Browse Repository</title>
   <s:head/>
+  
+  <script type="text/javascript" src="<c:url value='/js/jquery/jquery-1.2.6.pack.js'/>"></script>
+  <script type="text/javascript">
+    $(document).ready(function(){
+    
+    $("table.infoTable").hide();
+    $("a.expand").click(function(event){
+      event.preventDefault();
+      $(this).next().toggle("slow");
+    });
+  });
+  </script>
+  
 </head>
 
 <body>
   </c:if>  
   
   <c:if test="${not empty results.versions}">
-    <div id="nameColumn">
-      <h2>Versions</h2>
-      <ul>
-        <c:forEach items="${results.versions}" var="version">
-          <c:set var="url">
-            <s:url action="showArtifact" namespace="/">
-              <s:param name="groupId" value="%{#attr.results.selectedGroupId}"/>
-              <s:param name="artifactId" value="%{#attr.results.selectedArtifactId}"/>
-              <s:param name="version" value="%{#attr.version}"/>
-            </s:url>
-          </c:set>
-          <li><a href="${url}">${version}/</a></li>
-        </c:forEach>
-      </ul>
-    </div>
+    <%-- show shared project information (MRM-1041) --%>    
+    
+    <h2>Versions</h2>
+    <div id="nameColumn" class="versions">  
+      <a class="expand" href="#">Artifact Info</a>      
+      <table class="infoTable">        
+        <tr>
+          <th>Group ID</th>
+          <td>${sharedModel.groupId}</td>
+        </tr>
+        <tr>
+          <th>Artifact ID</th>
+          <td>${sharedModel.artifactId}</td>
+        </tr>        
+        <c:if test="${sharedModel.packaging != null}">
+        <tr>
+          <th>Packaging</th>
+          <td><code>${sharedModel.packaging}</code></td>
+        </tr>
+        </c:if>
+        <c:if test="${sharedModel.name != null}">
+        <tr>
+          <th>Name</th>
+          <td><code>${sharedModel.name}</code></td>
+        </tr>
+        </c:if>
+        <c:if test="${sharedModel.organization != null}">
+        <tr>
+          <th>Organisation</th>
+          <td>
+            <c:choose>
+              <c:when test="${sharedModel.organization.url != null}">
+                <a href="${sharedModel.organization.url}">${sharedModel.organization.name}</a>
+              </c:when>
+              <c:otherwise>
+                ${sharedModel.organization.name}
+              </c:otherwise>
+            </c:choose>
+          </td>
+        </tr>
+        </c:if>
+        <c:if test="${sharedModel.issueManagement != null}">
+        <tr>
+          <th>Issue Tracker</th>
+          <td>
+            <c:choose>
+              <c:when test="${!empty (sharedModel.issueManagement.url)}">
+                <a href="${sharedModel.issueManagement.url}">${sharedModel.issueManagement.system}</a>
+              </c:when>
+              <c:otherwise>
+                ${sharedModel.issueManagement.system}
+              </c:otherwise>
+            </c:choose>
+          </td>
+        </tr>
+        </c:if>
+        <c:if test="${sharedModel.ciManagement != null}">
+        <tr>
+          <th>Continuous Integration</th>
+          <td>
+            <c:choose>
+              <c:when test="${!empty (sharedModel.ciManagement.url)}">
+                <a href="${sharedModel.ciManagement.url}">${sharedModel.ciManagement.system}</a>
+              </c:when>
+              <c:otherwise>
+                ${sharedModel.ciManagement.system}
+              </c:otherwise>
+            </c:choose>
+          </td>
+        </tr>
+        </c:if>
+      </table>
+    </div>      
+
+    <ul>
+      <c:forEach items="${results.versions}" var="version">
+        <c:set var="url">
+          <s:url action="showArtifact" namespace="/">
+            <s:param name="groupId" value="%{#attr.results.selectedGroupId}"/>
+            <s:param name="artifactId" value="%{#attr.results.selectedArtifactId}"/>
+            <s:param name="version" value="%{#attr.version}"/>
+          </s:url>
+        </c:set>
+        <li><a href="${url}">${version}/</a></li>
+      </c:forEach>
+    </ul>    
   </c:if>  
 
 </div>
 
 </body>
-</html>
+</html>
\ No newline at end of file
index c9399557f1049ec4c50f9e098699db6bc6d36f12..a68b439a235caa1f733e4ce6d5e76fb83e245114 100644 (file)
@@ -424,4 +424,15 @@ div.infobox {
 
 div.buttons {
        text-align: center;
+}
+
+div.versions {
+    border: 1px dashed #DFDEDE;
+       margin-bottom: 15px;
+       padding: 5px;
+}
+
+div.versions a.expand {
+    font-size: 7pt;
+       color: gray;    
 }
\ No newline at end of file