diff --git a/src/main/java/com/svn/utils/mirror/SvnMirror.java b/src/main/java/com/svn/utils/mirror/SvnMirror.java index 74bf72d..00c5863 100644 --- a/src/main/java/com/svn/utils/mirror/SvnMirror.java +++ b/src/main/java/com/svn/utils/mirror/SvnMirror.java @@ -1,6 +1,8 @@ package com.svn.utils.mirror; +import com.svn.utils.mirror.app.Mirror; import com.svn.utils.mirror.gui.main.MainWindow; +import org.tmatesoft.svn.core.SVNException; /** * SvnMirror @@ -8,6 +10,17 @@ import com.svn.utils.mirror.gui.main.MainWindow; */ public class SvnMirror { public static void main(String[] args) { - new MainWindow("HelloWorldSwing"); + + //new MainWindow("HelloWorldSwing"); + Mirror mirror = Mirror.getInstance(); + try { + //mirror.createBaseRepo("base"); + //mirror.createMirrorRepo("mirror"); + mirror.loadBaseRepositoryURL("repos/base"); + mirror.loadMirrorRepositoryURL("repos/mirror"); + mirror.synchronize(); + } catch (SVNException e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/com/svn/utils/mirror/app/Mirror.java b/src/main/java/com/svn/utils/mirror/app/Mirror.java index 4abcb8e..a045e37 100644 --- a/src/main/java/com/svn/utils/mirror/app/Mirror.java +++ b/src/main/java/com/svn/utils/mirror/app/Mirror.java @@ -1,20 +1,112 @@ package com.svn.utils.mirror.app; import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNPropertyValue; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; +import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNWCUtil; import java.io.File; +import java.util.Iterator; +import java.util.Map; /** * SvnMirror * Created by Marcin on 2015-06-12. */ -public class Mirror { - public static void createRepo(String name, CreateRepoInt createRepoInt) { - try { - createRepoInt.onRepoCreated(SVNRepositoryFactory.createLocalRepository(new File("repos/" + name), true, true)); - } catch (SVNException e) { - createRepoInt.onRepoCreationException(e); +public final class Mirror { + private SVNRepository baseRepository; + private SVNURL baseRepositoryURL; + private SVNRepository mirrorRepository; + private SVNURL mirrorRepositoryURL; + private SVNClientManager svnClientManager; + private static Mirror mirror; + + public static Mirror getInstance() { + if (mirror == null) { + mirror = new Mirror(); + mirror.init(); } + return mirror; + } + + private Mirror() { + } + + public void init() { + svnClientManager = SVNClientManager.newInstance(); + } + + public SVNURL createRepo(String name) throws SVNException { + SVNURL url = SVNRepositoryFactory.createLocalRepository(new File("repos/" + name), true, true); + return url; + } + + public void createBaseRepo(String name) throws SVNException { + baseRepositoryURL = createRepo(name); + } + + public void createMirrorRepo(String name) throws SVNException { + mirrorRepositoryURL = createRepo(name); + } + + public void loadBaseRepostory(SVNURL url) throws SVNException { + baseRepository = SVNRepositoryFactory.create(url); + //authenticate(mirrorRepository, name, password); + + } + + public void loadBaseRepositoryURL(String url) throws SVNException { + baseRepositoryURL = SVNURL.fromFile(new File(url)); + } + + public void loadMirrorRepositoryURL(String url) throws SVNException { + mirrorRepositoryURL = SVNURL.fromFile(new File(url)); + } + + public void loadMirrorRepostory(SVNURL url, String name, String password) throws SVNException { + mirrorRepository = SVNRepositoryFactory.create(url); + //authenticate(mirrorRepository, name, password); + + } + + public void authenticate(SVNRepository repository, String name, String password) { + ISVNAuthenticationManager authManager = + SVNWCUtil.createDefaultAuthenticationManager(name, password); + repository.setAuthenticationManager(authManager); + } + + private void setupSvnRepositoryFactory() { + SVNRepositoryFactoryImpl.setup(); + } + + private void setupHttpRepositoryFactory() { + DAVRepositoryFactory.setup(); + } + + private void setupFileRepositoryFactory() { + FSRepositoryFactory.setup(); + } + + private void initializeRepository(SVNURL fromRepos, SVNURL toRepos) throws SVNException { + svnClientManager.getAdminClient().doInitialize(baseRepositoryURL, mirrorRepositoryURL); + } + + public void initializeRepository() throws SVNException { + initializeRepository(baseRepositoryURL, mirrorRepositoryURL); + } + + public void synchronize(SVNURL fromRepos, SVNURL toRepos) throws SVNException { + svnClientManager.getAdminClient().doSynchronize(toRepos); + } + + public void synchronize() throws SVNException { + synchronize(baseRepositoryURL, mirrorRepositoryURL); } } diff --git a/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java b/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java index b624243..eaf9b0c 100644 --- a/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java +++ b/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java @@ -33,7 +33,7 @@ public class MainWindow extends JFrame implements CreateRepoInt { createRepoButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - Mirror.createRepo(nameTextField.getText(), MainWindow.this); + //Mirror.createRepo(nameTextField.getText(), MainWindow.this); } }); }