1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.codehaus.mojo.scmchangelog.scm;
25
26 import java.util.regex.Pattern;
27 import org.apache.maven.plugin.logging.Log;
28 import org.apache.maven.scm.manager.ScmManager;
29 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
30 import org.codehaus.mojo.scmchangelog.scm.util.ScmAdapter;
31 import org.apache.maven.scm.repository.ScmRepository;
32 import org.codehaus.mojo.scmchangelog.changelog.log.grammar.GrammarEnum;
33 import org.codehaus.mojo.scmchangelog.scm.hg.HgScmAdapter;
34 import org.codehaus.mojo.scmchangelog.scm.hg.HgScmProvider;
35 import org.codehaus.mojo.scmchangelog.scm.svn.SvnScmAdapter;
36 import org.codehaus.mojo.scmchangelog.scm.svn.SvnXmlExeScmProvider;
37 import org.codehaus.mojo.scmchangelog.scm.util.DefaultScmAdapter;
38 import org.codehaus.plexus.util.StringUtils;
39
40
41
42
43
44
45
46 public class ScmAdapterFactory
47 {
48
49
50
51
52
53
54
55
56
57 public static final ScmAdapter getInstance( ScmManager currentManager,
58 GrammarEnum currentGrammar, ScmRepository repository, Log logger )
59 {
60 ScmAdapter adapter;
61 if ( "svn".equals( repository.getProvider() ) )
62 {
63 adapter = new SvnScmAdapter( currentManager, currentGrammar );
64 }
65 else if ( "hg".equals( repository.getProvider() ) )
66 {
67 adapter = new HgScmAdapter( currentManager, currentGrammar );
68 }
69 else
70 {
71 adapter = new DefaultScmAdapter( currentManager, currentGrammar );
72 }
73 adapter.setLogger( logger );
74 return adapter;
75 }
76
77
78
79
80
81
82
83
84 public static final void registerProviders( ScmManager manager,
85 GrammarEnum grammar, Log logger, Pattern pattern )
86 {
87 SvnXmlExeScmProvider svnProvider = new SvnXmlExeScmProvider( grammar ,
88 pattern );
89 svnProvider.setLogger( logger );
90 HgScmProvider hgProvider = new HgScmProvider( grammar , pattern );
91 hgProvider.setLogger( logger );
92 manager.setScmProvider( "svn", svnProvider );
93 manager.setScmProvider( "hg", hgProvider );
94 }
95
96
97
98
99
100
101
102 public static final void setTagBase( ScmRepository repository, String tagBase )
103 {
104 if ( !StringUtils.isEmpty( tagBase )
105 && "svn".equals( repository.getProvider() ) )
106 {
107 SvnScmProviderRepository svnRepo = ( SvnScmProviderRepository ) repository.getProviderRepository();
108 svnRepo.setTagBase( tagBase );
109 }
110 }
111 }