1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.provider;
20
21 import java.io.File;
22 import java.util.ArrayList;
23 import java.util.Date;
24 import java.util.List;
25
26 import org.apache.maven.scm.CommandParameter;
27 import org.apache.maven.scm.CommandParameters;
28 import org.apache.maven.scm.NoSuchCommandScmException;
29 import org.apache.maven.scm.ScmBranch;
30 import org.apache.maven.scm.ScmBranchParameters;
31 import org.apache.maven.scm.ScmException;
32 import org.apache.maven.scm.ScmFileSet;
33 import org.apache.maven.scm.ScmRevision;
34 import org.apache.maven.scm.ScmTagParameters;
35 import org.apache.maven.scm.ScmVersion;
36 import org.apache.maven.scm.command.add.AddScmResult;
37 import org.apache.maven.scm.command.blame.BlameScmRequest;
38 import org.apache.maven.scm.command.blame.BlameScmResult;
39 import org.apache.maven.scm.command.branch.BranchScmResult;
40 import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
41 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
42 import org.apache.maven.scm.command.checkin.CheckInScmResult;
43 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
44 import org.apache.maven.scm.command.diff.DiffScmResult;
45 import org.apache.maven.scm.command.edit.EditScmResult;
46 import org.apache.maven.scm.command.export.ExportScmResult;
47 import org.apache.maven.scm.command.info.InfoScmResult;
48 import org.apache.maven.scm.command.list.ListScmResult;
49 import org.apache.maven.scm.command.login.LoginScmResult;
50 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
51 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
52 import org.apache.maven.scm.command.remove.RemoveScmResult;
53 import org.apache.maven.scm.command.status.StatusScmResult;
54 import org.apache.maven.scm.command.tag.TagScmResult;
55 import org.apache.maven.scm.command.unedit.UnEditScmResult;
56 import org.apache.maven.scm.command.untag.UntagScmResult;
57 import org.apache.maven.scm.command.update.UpdateScmResult;
58 import org.apache.maven.scm.repository.ScmRepository;
59 import org.apache.maven.scm.repository.ScmRepositoryException;
60 import org.apache.maven.scm.repository.UnknownRepositoryStructure;
61 import org.slf4j.Logger;
62 import org.slf4j.LoggerFactory;
63
64
65
66
67
68
69
70 public abstract class AbstractScmProvider implements ScmProvider {
71 protected final Logger logger = LoggerFactory.getLogger(getClass());
72
73
74
75
76
77
78
79
80 @Override
81 public String getScmSpecificFilename() {
82 return null;
83 }
84
85
86
87
88 @Override
89 public String sanitizeTagName(String tag) {
90
91 return tag;
92 }
93
94
95
96
97 @Override
98 public boolean validateTagName(String tag) {
99
100 return true;
101 }
102
103
104
105
106 @Override
107 public List<String> validateScmUrl(String scmSpecificUrl, char delimiter) {
108 List<String> messages = new ArrayList<>();
109
110 try {
111 makeProviderScmRepository(scmSpecificUrl, delimiter);
112 } catch (ScmRepositoryException e) {
113 messages.add(e.getMessage());
114 }
115
116 return messages;
117 }
118
119
120
121
122 @Override
123 public boolean requiresEditMode() {
124 return false;
125 }
126
127
128
129
130
131
132
133
134 @Override
135 public AddScmResult add(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
136 return add(repository, fileSet, (String) null);
137 }
138
139
140
141
142 @Override
143 public AddScmResult add(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException {
144 login(repository, fileSet);
145
146 CommandParameters parameters = new CommandParameters();
147
148 parameters.setString(CommandParameter.MESSAGE, message == null ? "" : message);
149
150
151
152 parameters.setString(CommandParameter.BINARY, "false");
153
154 return add(repository.getProviderRepository(), fileSet, parameters);
155 }
156
157 @Override
158 public AddScmResult add(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
159 throws ScmException {
160 login(repository, fileSet);
161
162 if (parameters.getString(CommandParameter.BINARY, null) == null) {
163
164
165 parameters.setString(CommandParameter.BINARY, "false");
166 }
167
168 return add(repository.getProviderRepository(), fileSet, parameters);
169 }
170
171
172
173
174 public AddScmResult add(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
175 throws ScmException {
176 throw new NoSuchCommandScmException("add");
177 }
178
179
180
181
182 @Override
183 public BranchScmResult branch(ScmRepository repository, ScmFileSet fileSet, String branchName) throws ScmException {
184 return branch(repository, fileSet, branchName, new ScmBranchParameters());
185 }
186
187
188
189
190 @Override
191 public BranchScmResult branch(ScmRepository repository, ScmFileSet fileSet, String branchName, String message)
192 throws ScmException {
193 ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
194
195 if (message != null && !message.isEmpty()) {
196 scmBranchParameters.setMessage(message);
197 }
198
199 return branch(repository, fileSet, branchName, scmBranchParameters);
200 }
201
202 @Override
203 public BranchScmResult branch(
204 ScmRepository repository, ScmFileSet fileSet, String branchName, ScmBranchParameters scmBranchParameters)
205 throws ScmException {
206 login(repository, fileSet);
207
208 CommandParameters parameters = new CommandParameters();
209
210 parameters.setString(CommandParameter.BRANCH_NAME, branchName);
211
212 parameters.setScmBranchParameters(CommandParameter.SCM_BRANCH_PARAMETERS, scmBranchParameters);
213
214 return branch(repository.getProviderRepository(), fileSet, parameters);
215 }
216
217 protected BranchScmResult branch(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
218 throws ScmException {
219 throw new NoSuchCommandScmException("branch");
220 }
221
222
223
224
225
226
227 @Deprecated
228 @Override
229 public ChangeLogScmResult changeLog(
230 ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, String branch)
231 throws ScmException {
232 return changeLog(repository, fileSet, startDate, endDate, numDays, branch, null);
233 }
234
235
236
237
238
239
240 @Deprecated
241 @Override
242 public ChangeLogScmResult changeLog(
243 ScmRepository repository,
244 ScmFileSet fileSet,
245 Date startDate,
246 Date endDate,
247 int numDays,
248 String branch,
249 String datePattern)
250 throws ScmException {
251 ScmBranch scmBranch = null;
252
253 if (branch != null && !branch.isEmpty()) {
254 scmBranch = new ScmBranch(branch);
255 }
256 return changeLog(repository, fileSet, startDate, endDate, numDays, scmBranch, null);
257 }
258
259
260
261
262 @Override
263 public ChangeLogScmResult changeLog(
264 ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch)
265 throws ScmException {
266 return changeLog(repository, fileSet, startDate, endDate, numDays, branch, null);
267 }
268
269
270
271
272 @Override
273 public ChangeLogScmResult changeLog(
274 ScmRepository repository,
275 ScmFileSet fileSet,
276 Date startDate,
277 Date endDate,
278 int numDays,
279 ScmBranch branch,
280 String datePattern)
281 throws ScmException {
282 final ChangeLogScmRequest request = new ChangeLogScmRequest(repository, fileSet);
283 request.setDateRange(startDate, endDate);
284 request.setNumDays(numDays);
285 request.setScmBranch(branch);
286 request.setDatePattern(datePattern);
287 return changeLog(request);
288 }
289
290
291
292
293 @Override
294 public ChangeLogScmResult changeLog(ChangeLogScmRequest request) throws ScmException {
295 final ScmRepository scmRepository = request.getScmRepository();
296 final ScmFileSet scmFileSet = request.getScmFileSet();
297 login(scmRepository, scmFileSet);
298 return changelog(scmRepository.getProviderRepository(), scmFileSet, request.getCommandParameters());
299 }
300
301
302
303
304
305
306 @Deprecated
307 @Override
308 public ChangeLogScmResult changeLog(ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag)
309 throws ScmException {
310 return changeLog(repository, fileSet, startTag, endTag, null);
311 }
312
313
314
315
316
317
318 @Deprecated
319 @Override
320 public ChangeLogScmResult changeLog(
321 ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag, String datePattern)
322 throws ScmException {
323 ScmVersion startRevision = null;
324 ScmVersion endRevision = null;
325
326 if (startTag != null && !startTag.isEmpty()) {
327 startRevision = new ScmRevision(startTag);
328 }
329
330 if (endTag != null && !endTag.isEmpty()) {
331 endRevision = new ScmRevision(endTag);
332 }
333
334 return changeLog(repository, fileSet, startRevision, endRevision, null);
335 }
336
337
338
339
340 @Override
341 public ChangeLogScmResult changeLog(
342 ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion)
343 throws ScmException {
344 return changeLog(repository, fileSet, startVersion, endVersion, null);
345 }
346
347
348
349
350 @Override
351 public ChangeLogScmResult changeLog(
352 ScmRepository repository,
353 ScmFileSet fileSet,
354 ScmVersion startVersion,
355 ScmVersion endVersion,
356 String datePattern)
357 throws ScmException {
358 login(repository, fileSet);
359
360 CommandParameters parameters = new CommandParameters();
361
362 parameters.setScmVersion(CommandParameter.START_SCM_VERSION, startVersion);
363
364 parameters.setScmVersion(CommandParameter.END_SCM_VERSION, endVersion);
365
366 parameters.setString(CommandParameter.CHANGELOG_DATE_PATTERN, datePattern);
367
368 return changelog(repository.getProviderRepository(), fileSet, parameters);
369 }
370
371 protected ChangeLogScmResult changelog(
372 ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
373 throw new NoSuchCommandScmException("changelog");
374 }
375
376
377
378
379
380
381 @Deprecated
382 @Override
383 public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, String tag, String message)
384 throws ScmException {
385 ScmVersion scmVersion = null;
386
387 if (tag != null && !tag.isEmpty()) {
388 scmVersion = new ScmBranch(tag);
389 }
390
391 return checkIn(repository, fileSet, scmVersion, message);
392 }
393
394
395
396
397 @Override
398 public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException {
399 return checkIn(repository, fileSet, (ScmVersion) null, message);
400 }
401
402
403
404
405 @Override
406 public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, String message)
407 throws ScmException {
408 login(repository, fileSet);
409
410 CommandParameters parameters = new CommandParameters();
411
412 parameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
413
414 parameters.setString(CommandParameter.MESSAGE, message);
415
416 return checkin(repository.getProviderRepository(), fileSet, parameters);
417 }
418
419 @Override
420 public CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
421 throws ScmException {
422 return checkIn(
423 repository,
424 fileSet,
425 parameters.getScmVersion(CommandParameter.SCM_VERSION, null),
426 parameters.getString(CommandParameter.MESSAGE));
427 }
428
429 protected CheckInScmResult checkin(
430 ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
431 throw new NoSuchCommandScmException("checkin");
432 }
433
434
435
436
437
438
439 @Deprecated
440 @Override
441 public CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet, String tag) throws ScmException {
442 return checkOut(repository, fileSet, tag, true);
443 }
444
445
446
447
448
449
450 @Deprecated
451 @Override
452 public CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet, String tag, boolean recursive)
453 throws ScmException {
454 ScmVersion scmVersion = null;
455
456 if (tag != null && !tag.isEmpty()) {
457 scmVersion = new ScmBranch(tag);
458 }
459
460 return checkOut(repository, fileSet, scmVersion, recursive);
461 }
462
463
464
465
466 @Override
467 public CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
468 return checkOut(repository, fileSet, (ScmVersion) null, true);
469 }
470
471
472
473
474 @Override
475 public CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion)
476 throws ScmException {
477 return checkOut(repository, fileSet, scmVersion, true);
478 }
479
480
481
482
483 @Override
484 public CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet, boolean recursive)
485 throws ScmException {
486 return checkOut(repository, fileSet, (ScmVersion) null, recursive);
487 }
488
489
490
491
492 @Override
493 public CheckOutScmResult checkOut(
494 ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, boolean recursive)
495 throws ScmException {
496 login(repository, fileSet);
497
498 CommandParameters parameters = new CommandParameters();
499
500 parameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
501
502 parameters.setString(CommandParameter.RECURSIVE, Boolean.toString(recursive));
503
504 return checkout(repository.getProviderRepository(), fileSet, parameters);
505 }
506
507 @Override
508 public CheckOutScmResult checkOut(
509 ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, CommandParameters commandParameters)
510 throws ScmException {
511 login(repository, fileSet);
512 if (scmVersion != null && commandParameters.getScmVersion(CommandParameter.SCM_VERSION, null) == null) {
513 commandParameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
514 }
515
516 return checkout(repository.getProviderRepository(), fileSet, commandParameters);
517 }
518
519 protected CheckOutScmResult checkout(
520 ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
521 throw new NoSuchCommandScmException("checkout");
522 }
523
524
525
526
527
528
529 @Deprecated
530 @Override
531 public DiffScmResult diff(ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision)
532 throws ScmException {
533 ScmVersion startVersion = null;
534 ScmVersion endVersion = null;
535
536 if (startRevision != null && !startRevision.isEmpty()) {
537 startVersion = new ScmRevision(startRevision);
538 }
539
540 if (endRevision != null && !endRevision.isEmpty()) {
541 endVersion = new ScmRevision(endRevision);
542 }
543
544 return diff(repository, fileSet, startVersion, endVersion);
545 }
546
547
548
549
550 @Override
551 public DiffScmResult diff(
552 ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion)
553 throws ScmException {
554 login(repository, fileSet);
555
556 CommandParameters parameters = new CommandParameters();
557
558 parameters.setScmVersion(CommandParameter.START_SCM_VERSION, startVersion);
559
560 parameters.setScmVersion(CommandParameter.END_SCM_VERSION, endVersion);
561
562 return diff(repository.getProviderRepository(), fileSet, parameters);
563 }
564
565 protected DiffScmResult diff(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
566 throws ScmException {
567 throw new NoSuchCommandScmException("diff");
568 }
569
570
571
572
573 @Override
574 public EditScmResult edit(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
575 login(repository, fileSet);
576
577 CommandParameters parameters = new CommandParameters();
578
579 return edit(repository.getProviderRepository(), fileSet, parameters);
580 }
581
582 protected EditScmResult edit(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
583 throws ScmException {
584 if (logger.isWarnEnabled()) {
585 logger.warn("Provider " + this.getScmType() + " does not support edit operation.");
586 }
587
588 return new EditScmResult("", null, null, true);
589 }
590
591
592
593
594
595
596 @Deprecated
597 @Override
598 public ExportScmResult export(ScmRepository repository, ScmFileSet fileSet, String tag) throws ScmException {
599 return export(repository, fileSet, tag, null);
600 }
601
602
603
604
605
606
607 @Deprecated
608 @Override
609 public ExportScmResult export(ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory)
610 throws ScmException {
611 ScmVersion scmVersion = null;
612
613 if (tag != null && !tag.isEmpty()) {
614 scmVersion = new ScmRevision(tag);
615 }
616
617 return export(repository, fileSet, scmVersion, outputDirectory);
618 }
619
620
621
622
623 @Override
624 public ExportScmResult export(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
625 return export(repository, fileSet, (ScmVersion) null, null);
626 }
627
628
629
630
631 @Override
632 public ExportScmResult export(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion)
633 throws ScmException {
634 return export(repository, fileSet, scmVersion, null);
635 }
636
637
638
639
640 @Override
641 public ExportScmResult export(
642 ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, String outputDirectory)
643 throws ScmException {
644 login(repository, fileSet);
645
646 CommandParameters parameters = new CommandParameters();
647
648 parameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
649
650 parameters.setString(CommandParameter.OUTPUT_DIRECTORY, outputDirectory);
651
652 return export(repository.getProviderRepository(), fileSet, parameters);
653 }
654
655 protected ExportScmResult export(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
656 throws ScmException {
657 throw new NoSuchCommandScmException("export");
658 }
659
660
661
662
663 @Override
664 public ListScmResult list(ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag)
665 throws ScmException {
666 ScmVersion scmVersion = null;
667
668 if (tag != null && !tag.isEmpty()) {
669 scmVersion = new ScmRevision(tag);
670 }
671
672 return list(repository, fileSet, recursive, scmVersion);
673 }
674
675
676
677
678 @Override
679 public ListScmResult list(ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion scmVersion)
680 throws ScmException {
681 login(repository, fileSet);
682
683 CommandParameters parameters = new CommandParameters();
684
685 parameters.setString(CommandParameter.RECURSIVE, Boolean.toString(recursive));
686
687 if (scmVersion != null) {
688 parameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
689 }
690
691 return list(repository.getProviderRepository(), fileSet, parameters);
692 }
693
694
695
696
697
698
699
700
701
702
703
704 protected ListScmResult list(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
705 throws ScmException {
706 throw new NoSuchCommandScmException("list");
707 }
708
709
710
711
712 @Override
713 public MkdirScmResult mkdir(ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal)
714 throws ScmException {
715 login(repository, fileSet);
716
717 CommandParameters parameters = new CommandParameters();
718
719 if (message == null) {
720 message = "";
721 if (!createInLocal) {
722 logger.warn("Commit message is empty!");
723 }
724 }
725
726 parameters.setString(CommandParameter.MESSAGE, message);
727
728 parameters.setString(CommandParameter.SCM_MKDIR_CREATE_IN_LOCAL, Boolean.toString(createInLocal));
729
730 return mkdir(repository.getProviderRepository(), fileSet, parameters);
731 }
732
733
734
735
736
737
738
739
740
741
742 protected MkdirScmResult mkdir(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
743 throws ScmException {
744 throw new NoSuchCommandScmException("mkdir");
745 }
746
747 private void login(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
748 LoginScmResult result = login(repository.getProviderRepository(), fileSet, new CommandParameters());
749
750 if (!result.isSuccess()) {
751 throw new ScmException("Can't login.\n" + result.getCommandOutput());
752 }
753 }
754
755 protected LoginScmResult login(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
756 throws ScmException {
757 return new LoginScmResult(null, null, null, true);
758 }
759
760
761
762
763 @Override
764 public RemoveScmResult remove(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException {
765 login(repository, fileSet);
766
767 CommandParameters parameters = new CommandParameters();
768
769 parameters.setString(CommandParameter.MESSAGE, message == null ? "" : message);
770
771 return remove(repository.getProviderRepository(), fileSet, parameters);
772 }
773
774 protected RemoveScmResult remove(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
775 throws ScmException {
776 throw new NoSuchCommandScmException("remove");
777 }
778
779
780
781
782 @Override
783 public StatusScmResult status(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
784 login(repository, fileSet);
785
786 CommandParameters parameters = new CommandParameters();
787
788 return status(repository.getProviderRepository(), fileSet, parameters);
789 }
790
791 protected StatusScmResult status(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
792 throws ScmException {
793 throw new NoSuchCommandScmException("status");
794 }
795
796
797
798
799 @Override
800 public TagScmResult tag(ScmRepository repository, ScmFileSet fileSet, String tagName) throws ScmException {
801 return tag(repository, fileSet, tagName, new ScmTagParameters());
802 }
803
804
805
806
807 @Override
808 public TagScmResult tag(ScmRepository repository, ScmFileSet fileSet, String tagName, String message)
809 throws ScmException {
810 login(repository, fileSet);
811
812 CommandParameters parameters = new CommandParameters();
813
814 parameters.setString(CommandParameter.TAG_NAME, tagName);
815
816 if (message != null && !message.isEmpty()) {
817 parameters.setString(CommandParameter.MESSAGE, message);
818 }
819
820 ScmTagParameters scmTagParameters = new ScmTagParameters(message);
821
822 parameters.setScmTagParameters(CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters);
823
824 return tag(repository.getProviderRepository(), fileSet, parameters);
825 }
826
827
828
829
830 @Override
831 public TagScmResult tag(
832 ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters)
833 throws ScmException {
834 login(repository, fileSet);
835
836 CommandParameters parameters = new CommandParameters();
837
838 parameters.setString(CommandParameter.TAG_NAME, tagName);
839
840 parameters.setScmTagParameters(CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters);
841
842 return tag(repository.getProviderRepository(), fileSet, parameters);
843 }
844
845 protected TagScmResult tag(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
846 throws ScmException {
847 throw new NoSuchCommandScmException("tag");
848 }
849
850
851
852
853 @Override
854 public UnEditScmResult unedit(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
855 login(repository, fileSet);
856
857 CommandParameters parameters = new CommandParameters();
858
859 return unedit(repository.getProviderRepository(), fileSet, parameters);
860 }
861
862 protected UnEditScmResult unedit(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
863 throws ScmException {
864 if (logger.isWarnEnabled()) {
865 logger.warn("Provider " + this.getScmType() + " does not support unedit operation.");
866 }
867
868 return new UnEditScmResult("", null, null, true);
869 }
870
871
872
873
874 @Override
875 public UntagScmResult untag(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
876 throws ScmException {
877 logger.warn("Provider " + this.getScmType() + " does not support untag operation.");
878 return new UntagScmResult("", null, null, true);
879 }
880
881
882
883
884
885
886 @Deprecated
887 @Override
888 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, String tag) throws ScmException {
889 return update(repository, fileSet, tag, true);
890 }
891
892
893
894
895
896
897 @Deprecated
898 @Override
899 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog)
900 throws ScmException {
901 return update(repository, fileSet, tag, "", runChangelog);
902 }
903
904
905
906
907 @Override
908 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet) throws ScmException {
909 return update(repository, fileSet, (ScmVersion) null, true);
910 }
911
912
913
914
915 @Override
916 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion)
917 throws ScmException {
918 return update(repository, fileSet, scmVersion, true);
919 }
920
921
922
923
924 @Override
925 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, boolean runChangelog)
926 throws ScmException {
927 return update(repository, fileSet, (ScmVersion) null, "", runChangelog);
928 }
929
930
931
932
933 @Override
934 public UpdateScmResult update(
935 ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, boolean runChangelog)
936 throws ScmException {
937 return update(repository, fileSet, scmVersion, "", runChangelog);
938 }
939
940
941
942
943
944
945 @Override
946 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern)
947 throws ScmException {
948 return update(repository, fileSet, tag, datePattern, true);
949 }
950
951
952
953
954 @Override
955 public UpdateScmResult update(
956 ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, String datePattern)
957 throws ScmException {
958 return update(repository, fileSet, scmVersion, datePattern, true);
959 }
960
961
962
963
964 private UpdateScmResult update(
965 ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern, boolean runChangelog)
966 throws ScmException {
967 ScmBranch scmBranch = null;
968
969 if (tag != null && !tag.isEmpty()) {
970 scmBranch = new ScmBranch(tag);
971 }
972
973 return update(repository, fileSet, scmBranch, datePattern, runChangelog);
974 }
975
976 private UpdateScmResult update(
977 ScmRepository repository,
978 ScmFileSet fileSet,
979 ScmVersion scmVersion,
980 String datePattern,
981 boolean runChangelog)
982 throws ScmException {
983 login(repository, fileSet);
984
985 CommandParameters parameters = new CommandParameters();
986
987 parameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
988
989 parameters.setString(CommandParameter.CHANGELOG_DATE_PATTERN, datePattern);
990
991 parameters.setString(CommandParameter.RUN_CHANGELOG_WITH_UPDATE, String.valueOf(runChangelog));
992
993 return update(repository.getProviderRepository(), fileSet, parameters);
994 }
995
996
997
998
999
1000
1001 @Deprecated
1002 @Override
1003 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate)
1004 throws ScmException {
1005 return update(repository, fileSet, tag, lastUpdate, null);
1006 }
1007
1008
1009
1010
1011 @Override
1012 public UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate)
1013 throws ScmException {
1014 return update(repository, fileSet, scmVersion, lastUpdate, null);
1015 }
1016
1017
1018
1019
1020
1021
1022 @Deprecated
1023 @Override
1024 public UpdateScmResult update(
1025 ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate, String datePattern)
1026 throws ScmException {
1027 ScmBranch scmBranch = null;
1028
1029 if (tag != null && !tag.isEmpty()) {
1030 scmBranch = new ScmBranch(tag);
1031 }
1032
1033 return update(repository, fileSet, scmBranch, lastUpdate, datePattern);
1034 }
1035
1036
1037
1038
1039 @Override
1040 public UpdateScmResult update(
1041 ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate, String datePattern)
1042 throws ScmException {
1043 login(repository, fileSet);
1044
1045 CommandParameters parameters = new CommandParameters();
1046
1047 parameters.setScmVersion(CommandParameter.SCM_VERSION, scmVersion);
1048
1049 if (lastUpdate != null) {
1050 parameters.setDate(CommandParameter.START_DATE, lastUpdate);
1051 }
1052
1053 parameters.setString(CommandParameter.CHANGELOG_DATE_PATTERN, datePattern);
1054
1055 parameters.setString(CommandParameter.RUN_CHANGELOG_WITH_UPDATE, "true");
1056
1057 return update(repository.getProviderRepository(), fileSet, parameters);
1058 }
1059
1060 protected UpdateScmResult update(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
1061 throws ScmException {
1062 throw new NoSuchCommandScmException("update");
1063 }
1064
1065
1066
1067
1068 @Override
1069 public BlameScmResult blame(ScmRepository repository, ScmFileSet fileSet, String filename) throws ScmException {
1070 login(repository, fileSet);
1071
1072 CommandParameters parameters = new CommandParameters();
1073
1074 parameters.setString(CommandParameter.FILE, filename);
1075
1076 return blame(repository.getProviderRepository(), fileSet, parameters);
1077 }
1078
1079 protected BlameScmResult blame(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
1080 throws ScmException {
1081 throw new NoSuchCommandScmException("blame");
1082 }
1083
1084 @Override
1085 public BlameScmResult blame(BlameScmRequest blameScmRequest) throws ScmException {
1086 return blame(
1087 blameScmRequest.getScmRepository().getProviderRepository(),
1088 blameScmRequest.getScmFileSet(),
1089 blameScmRequest.getCommandParameters());
1090 }
1091
1092 @Override
1093 public InfoScmResult info(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
1094 throws ScmException {
1095 return null;
1096 }
1097
1098 @Override
1099 public RemoteInfoScmResult remoteInfo(
1100 ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
1101 return null;
1102 }
1103
1104
1105
1106
1107 @Override
1108 public ScmProviderRepository makeProviderScmRepository(File path)
1109 throws ScmRepositoryException, UnknownRepositoryStructure {
1110 throw new UnknownRepositoryStructure();
1111 }
1112 }