1 package org
.argeo
.cms
.internal
.backup
;
3 import java
.security
.PrivilegedExceptionAction
;
6 import javax
.jcr
.Credentials
;
7 import javax
.jcr
.Repository
;
8 import javax
.jcr
.RepositoryException
;
9 import javax
.jcr
.Session
;
11 import org
.argeo
.cms
.DataMigration
;
12 import org
.argeo
.jcr
.JcrUtils
;
14 /** Migrate data between two workspaces, at JCR level. */
15 public class RepositoryMigration
implements PrivilegedExceptionAction
<Boolean
> {
16 private final Repository sourceRepository
;
17 private final Repository targetRepository
;
18 private final DataMigration dataMigration
;
20 private Credentials sourceCredentials
= null;
21 private Credentials targetCredentials
= null;
23 public RepositoryMigration(Repository sourceRepository
,
24 Repository targetRepository
, DataMigration dataMigration
) {
25 this.sourceRepository
= sourceRepository
;
26 this.targetRepository
= targetRepository
;
27 this.dataMigration
= dataMigration
;
31 public Boolean
run() throws Exception
{
32 Map
<String
, String
> wk
= dataMigration
.workspacesToMigrate();
34 return migrate(sourceRepository
, null, targetRepository
, null);
36 for (String sourceWorkspace
: wk
.keySet()) {
37 String targetWorkspace
= wk
.get(sourceWorkspace
);
38 boolean ok
= migrate(sourceRepository
, sourceWorkspace
,
39 targetRepository
, targetWorkspace
);
47 protected final boolean migrate(Repository sourceRepository
,
48 String sourceWorkspace
, Repository targetRepository
,
49 String targetWorkspace
) throws RepositoryException
{
50 Session source
= null, target
= null;
52 source
= sourceRepository
.login(sourceCredentials
, sourceWorkspace
);
53 target
= targetRepository
.login(targetCredentials
, targetWorkspace
);
54 return dataMigration
.migrate(source
, target
);
56 JcrUtils
.logoutQuietly(source
);
57 JcrUtils
.logoutQuietly(target
);
61 public void setSourceCredentials(Credentials sourceCredentials
) {
62 this.sourceCredentials
= sourceCredentials
;
65 public void setTargetCredentials(Credentials targetCredentials
) {
66 this.targetCredentials
= targetCredentials
;