You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/09/20 21:43:45 UTC
svn commit: r1388178 - in /archiva/trunk/archiva-modules/archiva-web:
archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/
archiva-web-common/src/main/resources/org/apache/archiva/i18n/
archiva-webapp-js/src/main/webapp/js...
Author: olamy
Date: Thu Sep 20 19:43:45 2012
New Revision: 1388178
URL: http://svn.apache.org/viewvc?rev=1388178&view=rev
Log:
implements merging repositories in the new ui
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultMergeRepositoriesService.java
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/modal.html
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultMergeRepositoriesService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultMergeRepositoriesService.java?rev=1388178&r1=1388177&r2=1388178&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultMergeRepositoriesService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultMergeRepositoriesService.java Thu Sep 20 19:43:45 2012
@@ -50,6 +50,8 @@ public class DefaultMergeRepositoriesSer
implements MergeRepositoriesService
{
+ // FIXME check archiva-merge-repository to sourceRepoId
+
@Inject
@Named ( value = "repositoryMerger#maven2" )
private Maven2RepositoryMerger repositoryMerger;
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties?rev=1388178&r1=1388177&r2=1388178&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties Thu Sep 20 19:43:45 2012
@@ -98,6 +98,8 @@ skipPackedIndexCreation=Skip Packed Inde
skipPackedIndexCreation.help.title=Skip Packed Index creation
skipPackedIndexCreation.help.content=Will prevent creating packed and incremental indexes which are consumed by remote repositories manager and/or IDE.
managedrepository.actions=Actions
+managedrepository.repomerge.dialog.header=Choose a target repository for merging
+managedrepository.mergerepo=Merge this repository
# remote repositories screen
remoterepository.downloadremoteindex.now=Download Remote Index Now
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js?rev=1388178&r1=1388177&r2=1388178&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js Thu Sep 20 19:43:45 2012
@@ -526,8 +526,108 @@ define("archiva.repositories",["jquery",
}
+ mergeRepo=function(managedRepository){
+ $("#user-messages" ).html(mediumSpinnerImg());
+ // is there any artifacts to merge ?
+ var artifactsNumberUrl = "restServices/archivaServices/browseService/artifacts/"+encodeURIComponent(managedRepository.id());
+ $.ajax(artifactsNumberUrl,{
+ type: "GET",
+ dataType: 'json',
+ success: function(data){
+ var artifacts=mapArtifacts(data);
+ $.log("artifactsNumber for '" + managedRepository.id() + "': " + artifacts.length);
+
+ if (artifacts<1){
+ displayWarningMessage($.i18n.prop("managedrepository.merge.noartifacts", managedRepository.id()));
+ return;
+ }
+
+ $.log("merge repo open dialog");
+ var dialogMergeRepo=$("#dialog-modal-merge-repo");
+ if (window.modalMergeRepoDialog==null) {
+ window.modalMergeRepoDialog = dialogMergeRepo.modal();
+
+ }
+
+ loadManagedRepositories(function(data){
+
+ var managedRepositories = $.map(mapManagedRepositories(data), function(item) {
+ return item.id()==managedRepository.id()?null:item;
+ });
+ $("#dialog-modal-merge-repo-body-text").html($("#merge-repo-dialog-content" )
+ .tmpl({sourceRepoId:managedRepository.id(),repositories:managedRepositories}));
+ window.modalMergeRepoDialog.modal('show');
+ });
+
+ },
+ complete: function(){
+ $.log("complete removeMediumSpinnerImg");
+ removeMediumSpinnerImg("#user-messages");
+ }
+ }
+ );
+
+
+ }
+
+
+ }
+
+ mergeRepositories=function(sourceRepository,targetRepository){
+ $.log("mergeRepositories:"+sourceRepository+":"+targetRepository);
+
+ var mergeRepoDialogBodyId="dialog-modal-merge-repo-body-text";
+ var mergeRepoDialogBody=$("#"+mergeRepoDialogBodyId);
+ mergeRepoDialogBody.html(mediumSpinnerImg());
+
+ // check conflicts
+ var url = "restServices/archivaServices/mergeRepositoriesService/mergeConflictedArtifacts/"+encodeURIComponent(sourceRepository);
+ url+="/"+encodeURIComponent(targetRepository);
+ $.ajax(url, {
+ type: "GET",
+ dataType: 'json',
+ success: function(data){
+ var artifacts=mapArtifacts(data);
+ if (artifacts && artifacts.length){
+ // we have conflicts ask to skip or not
+ $.log("conflicts:"+artifacts.length);
+ displayWarningMessage($.i18n.prop("managedrepository.merge.conflicts", artifacts.length),"dialog-modal-merge-repo-body-text");
+ $.tmpl($("#merge-repo-skip-conflicts").html(),
+ { artifacts:artifacts, sourceRepository: sourceRepository, targetRepository:targetRepository })
+ .appendTo( "#dialog-modal-merge-repo-body-text" );
+ } else {
+ doMerge(sourceRepository,targetRepository,false);
+ }
+ },
+ complete: function(){
+ $.log("complete removeMediumSpinnerImg");
+ removeMediumSpinnerImg("#dialog-modal-merge-repo-body-text");
+ }
+ });
+
+
+
+ }
+
+ doMerge=function(sourceRepository,targetRepository,skipConflicts){
+ $.log("doMerge:"+sourceRepository+" to " + targetRepository + ", skipConflicts: " + skipConflicts);
+ window.modalMergeRepoDialog.modal('hide');
+ $("#user-messages" ).html(mediumSpinnerImg());
+ var url = "restServices/archivaServices/mergeRepositoriesService/mergeRepositories/"+encodeURIComponent(sourceRepository);
+ url+="/"+encodeURIComponent(targetRepository);
+ url+="/"+skipConflicts;
+ $.ajax(url, {
+ type: "GET",
+ dataType: 'json',
+ success: function(data){
+ displaySuccessMessage($.i18n.prop("managedrepository.merge.success", sourceRepository,targetRepository));
+ },
+ complete: function(){
+ removeMediumSpinnerImg("#user-messages");
+ }
+ });
}
activateManagedRepositoriesGridTab=function(){
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/modal.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/modal.html?rev=1388178&r1=1388177&r2=1388178&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/modal.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/modal.html Thu Sep 20 19:43:45 2012
@@ -28,4 +28,14 @@
<a class="btn secondary" id="dialog-confirm-modal-cancel" href="#">${$.i18n.prop('cancel')}</a>
<a class="btn primary" id="dialog-confirm-modal-ok" href="#">${$.i18n.prop('ok')}</a>
</div>
+</div>
+
+<div id="dialog-modal-merge-repo" class="modal hide fade" style="display: block;">
+ <div class="modal-header">
+ <a class="close" href="#" data-dismiss="modal">×</a>
+ <h3 id="dialog-modal-merge-repo-header-title">${$.i18n.prop('managedrepository.repomerge.dialog.header')}</h3>
+ </div>
+ <div class="modal-body" id="dialog-modal-merge-repo-body-text">>
+ </div>
+
</div>
\ No newline at end of file
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html?rev=1388178&r1=1388177&r2=1388178&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html Thu Sep 20 19:43:45 2012
@@ -146,6 +146,20 @@
${$.i18n.prop('managedrepository.pomsnippet')}
</a>
</li>
+ <li>
+ {{if row.stageRepoNeeded()}}
+ stage
+ {{/if}}
+ </li>
+ <li>
+ <!-- todo check archiva-merge-repository operation -->
+ <a href="#" data-bind="click: function(){ mergeRepo(row) }">
+ <span class="btn btn-info">
+ <i class="icon-repeat icon-white"></i>
+ </span>
+ ${$.i18n.prop('managedrepository.mergerepo')}
+ </a>
+ </li>
</ul>
</div>
</td>
@@ -1177,4 +1191,29 @@
<div>
<span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
</div>
+</script>
+
+
+<script id="merge-repo-dialog-content" type="text/html">
+ <div class="btn-group btn-group-vertical">
+ {{each(i, repository) repositories}}
+ <button class="btn" type="button" onclick="mergeRepositories(encodeURIComponent('${sourceRepoId}'),encodeURIComponent('${repository.id()}'))">${repository.name()}</button>
+ {{/each}}
+ </div>
+</script>
+
+<script id="merge-repo-skip-conflicts" type="text/html">
+ <div>
+ <ul>
+ {{each(i, artifact) artifacts}}
+ <li>${artifact.groupId}:${artifact.artifactId}:${artifact.version}</li>
+ {{/each}}
+ </ul>
+ </div>
+ <div>
+ <button class="btn btn-success" onclick="doMerge(encodeURIComponent('${sourceRepository}'),encodeURIComponent('${targetRepository}'),false);" type="button">${$.i18n.prop('managedrepository.merge.domerge')}</button>
+ {{if artifacts.length > 0}}
+ <button class="btn btn-warning" onclick="doMerge(encodeURIComponent('${sourceRepository}'),encodeURIComponent('${targetRepository}'),true);" type="button">${$.i18n.prop('managedrepository.merge.domerge.skipconflicts')}</button>
+ {{/if}}
+ </div>
</script>
\ No newline at end of file