1 | |
package org.apache.maven.scm.provider.synergy.util; |
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
|
20 | |
|
21 | |
|
22 | |
import java.io.File; |
23 | |
import java.io.IOException; |
24 | |
import java.text.SimpleDateFormat; |
25 | |
import java.util.ArrayList; |
26 | |
import java.util.Date; |
27 | |
import java.util.List; |
28 | |
import java.util.Locale; |
29 | |
|
30 | |
import org.apache.maven.scm.ChangeFile; |
31 | |
import org.apache.maven.scm.ScmException; |
32 | |
import org.apache.maven.scm.ScmVersion; |
33 | |
import org.apache.maven.scm.log.ScmLogger; |
34 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyCreateTaskConsumer; |
35 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyGetCompletedTasksConsumer; |
36 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyGetTaskObjectsConsumer; |
37 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyGetWorkingFilesConsumer; |
38 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyGetWorkingProjectConsumer; |
39 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyShowDefaultTaskConsumer; |
40 | |
import org.apache.maven.scm.provider.synergy.consumer.SynergyWorkareaConsumer; |
41 | |
import org.codehaus.plexus.util.cli.CommandLineException; |
42 | |
import org.codehaus.plexus.util.cli.CommandLineUtils; |
43 | |
import org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer; |
44 | |
import org.codehaus.plexus.util.cli.Commandline; |
45 | |
import org.codehaus.plexus.util.cli.StreamConsumer; |
46 | |
|
47 | |
|
48 | |
|
49 | |
|
50 | |
|
51 | |
|
52 | |
|
53 | |
|
54 | |
public final class SynergyUtil |
55 | |
{ |
56 | |
|
57 | |
private SynergyUtil() |
58 | 0 | { |
59 | 0 | } |
60 | |
|
61 | |
|
62 | |
|
63 | |
|
64 | |
public static final String SEPARATOR = "#####"; |
65 | |
|
66 | |
|
67 | |
|
68 | |
|
69 | |
|
70 | |
|
71 | |
|
72 | |
|
73 | |
|
74 | |
|
75 | |
public static String removePrefix( File prefix, File file ) |
76 | |
throws ScmException |
77 | |
{ |
78 | |
try |
79 | |
{ |
80 | 0 | String prefixStr = prefix.getCanonicalPath(); |
81 | 0 | String fileStr = file.getCanonicalPath(); |
82 | 0 | if ( !fileStr.startsWith( prefixStr ) ) |
83 | |
{ |
84 | 0 | throw new ScmException( prefixStr + " is not a prefix of " + fileStr ); |
85 | |
} |
86 | 0 | return fileStr.substring( prefixStr.length() ); |
87 | |
} |
88 | 0 | catch ( IOException e ) |
89 | |
{ |
90 | 0 | throw new ScmException( "IOException", e ); |
91 | |
} |
92 | |
|
93 | |
} |
94 | |
|
95 | |
|
96 | |
|
97 | |
|
98 | |
|
99 | |
|
100 | |
|
101 | |
|
102 | |
|
103 | |
|
104 | |
public static String getWorkingProject( ScmLogger logger, String projectSpec, String username, String ccmAddr ) |
105 | |
throws ScmException |
106 | |
{ |
107 | 0 | if ( logger.isDebugEnabled() ) |
108 | |
{ |
109 | 0 | logger.debug( "Synergy : Entering getWorkingProject method" ); |
110 | |
} |
111 | |
|
112 | 0 | String query = |
113 | |
"owner='" + username + "' and status='working' and type='project' and has_predecessor('" + projectSpec +"')"; |
114 | |
|
115 | |
|
116 | 0 | Commandline cl = SynergyCCM.query( query, "%objectname", ccmAddr ); |
117 | |
|
118 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
119 | 0 | SynergyGetWorkingProjectConsumer stdout = new SynergyGetWorkingProjectConsumer( logger ); |
120 | |
|
121 | 0 | int errorCode = executeSynergyCommand( logger, cl, stderr, stdout, false ); |
122 | |
|
123 | 0 | if ( logger.isDebugEnabled() ) |
124 | |
{ |
125 | 0 | logger.debug( "Synergy : getWorkingProject returns " + stdout.getProjectSpec() + " with code " |
126 | |
+ errorCode ); |
127 | |
} |
128 | |
|
129 | 0 | return stdout.getProjectSpec(); |
130 | |
} |
131 | |
|
132 | |
|
133 | |
|
134 | |
|
135 | |
|
136 | |
|
137 | |
|
138 | |
|
139 | |
|
140 | |
|
141 | |
public static List<String> getWorkingFiles( ScmLogger logger, String projectSpec, String release, String ccmAddr ) |
142 | |
throws ScmException |
143 | |
{ |
144 | 0 | if ( logger.isDebugEnabled() ) |
145 | |
{ |
146 | 0 | logger.debug( "Synergy : Entering getWorkingFiles method" ); |
147 | |
} |
148 | |
|
149 | 0 | String query = "status='working' and release='" + release + "' and is_member_of('" + projectSpec + "')"; |
150 | |
|
151 | 0 | Commandline cl = SynergyCCM.query( query, SynergyGetWorkingFilesConsumer.OUTPUT_FORMAT, ccmAddr ); |
152 | |
|
153 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
154 | 0 | SynergyGetWorkingFilesConsumer stdout = new SynergyGetWorkingFilesConsumer( logger ); |
155 | |
|
156 | 0 | int errorCode = executeSynergyCommand( logger, cl, stderr, stdout, false ); |
157 | |
|
158 | 0 | if ( logger.isDebugEnabled() ) |
159 | |
{ |
160 | 0 | logger.debug( "Synergy : getWorkingFiles returns " + stdout.getFiles().size() + " files with code " |
161 | |
+ errorCode ); |
162 | |
} |
163 | |
|
164 | 0 | return stdout.getFiles(); |
165 | |
} |
166 | |
|
167 | |
|
168 | |
|
169 | |
|
170 | |
|
171 | |
|
172 | |
|
173 | |
|
174 | |
|
175 | |
public static List<ChangeFile> getModifiedObjects( ScmLogger logger, int numTask, String ccmAddr ) |
176 | |
throws ScmException |
177 | |
{ |
178 | 0 | if ( logger.isDebugEnabled() ) |
179 | |
{ |
180 | 0 | logger.debug( "Synergy : Entering getModifiedObjects method" ); |
181 | |
} |
182 | |
|
183 | 0 | Commandline cl = SynergyCCM.showTaskObjects( numTask, SynergyGetTaskObjectsConsumer.OUTPUT_FORMAT, ccmAddr ); |
184 | |
|
185 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
186 | 0 | SynergyGetTaskObjectsConsumer stdout = new SynergyGetTaskObjectsConsumer( logger ); |
187 | 0 | int errorCode = executeSynergyCommand( logger, cl, stderr, stdout, false ); |
188 | |
|
189 | 0 | if ( logger.isDebugEnabled() ) |
190 | |
{ |
191 | 0 | logger.debug( "Synergy : getModifiedObjects returns " + stdout.getFiles().size() + " files with code " |
192 | |
+ errorCode ); |
193 | |
} |
194 | |
|
195 | 0 | return stdout.getFiles(); |
196 | |
|
197 | |
} |
198 | |
|
199 | |
|
200 | |
|
201 | |
|
202 | |
|
203 | |
|
204 | |
|
205 | |
|
206 | |
|
207 | |
|
208 | |
|
209 | |
|
210 | |
|
211 | |
public static List<SynergyTask> getCompletedTasks( ScmLogger logger, String projectSpec, Date startDate, Date endDate, |
212 | |
String ccmAddr ) |
213 | |
throws ScmException |
214 | |
{ |
215 | 0 | if ( logger.isDebugEnabled() ) |
216 | |
{ |
217 | 0 | logger.debug( "Synergy : Entering getCompletedTasks method" ); |
218 | |
} |
219 | |
|
220 | |
|
221 | |
|
222 | |
|
223 | 0 | SimpleDateFormat toCcmDate = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss", new Locale( "en", "US" ) ); |
224 | |
|
225 | |
|
226 | 0 | String query = "is_task_in_folder_of(is_folder_in_rp_of('" + projectSpec + "'))"; |
227 | 0 | if ( startDate != null ) |
228 | |
{ |
229 | 0 | query = query + "and completion_date>time('" + toCcmDate.format( startDate ) + "')"; |
230 | |
} |
231 | 0 | if ( endDate != null ) |
232 | |
{ |
233 | 0 | query = query + "and completion_date<time('" + toCcmDate.format( endDate ) + "')"; |
234 | |
} |
235 | |
|
236 | 0 | Commandline cl = SynergyCCM.query( query, SynergyGetCompletedTasksConsumer.OUTPUT_FORMAT, ccmAddr ); |
237 | |
|
238 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
239 | 0 | SynergyGetCompletedTasksConsumer stdout = new SynergyGetCompletedTasksConsumer( logger ); |
240 | |
|
241 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, false ); |
242 | |
|
243 | 0 | if ( logger.isDebugEnabled() ) |
244 | |
{ |
245 | 0 | logger.debug( "Synergy : getCompletedTasks method returns " + stdout.getTasks().size() + " tasks" ); |
246 | |
} |
247 | |
|
248 | 0 | return stdout.getTasks(); |
249 | |
} |
250 | |
|
251 | |
|
252 | |
|
253 | |
|
254 | |
|
255 | |
|
256 | |
|
257 | |
|
258 | |
|
259 | |
|
260 | |
|
261 | |
|
262 | |
public static void createBaseline( ScmLogger logger, String projectSpec, String name, String release, |
263 | |
String purpose, String ccmAddr ) |
264 | |
throws ScmException |
265 | |
{ |
266 | 0 | if ( logger.isDebugEnabled() ) |
267 | |
{ |
268 | 0 | logger.debug( "Synergy : Entering createBaseline method" ); |
269 | |
} |
270 | |
|
271 | 0 | Commandline cl = SynergyCCM.createBaseline( projectSpec, name, release, purpose, ccmAddr ); |
272 | |
|
273 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
274 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
275 | |
|
276 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
277 | 0 | } |
278 | |
|
279 | |
|
280 | |
|
281 | |
|
282 | |
|
283 | |
|
284 | |
|
285 | |
|
286 | |
|
287 | |
|
288 | |
public static void create( ScmLogger logger, File file, String message, String ccmAddr ) |
289 | |
throws ScmException |
290 | |
{ |
291 | 0 | if ( logger.isDebugEnabled() ) |
292 | |
{ |
293 | 0 | logger.debug( "Synergy : Entering create method" ); |
294 | |
} |
295 | |
|
296 | 0 | List<File> files = new ArrayList<File>(); |
297 | 0 | files.add( file ); |
298 | 0 | Commandline cl = SynergyCCM.create( files, message, ccmAddr ); |
299 | |
|
300 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
301 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
302 | |
|
303 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
304 | 0 | } |
305 | |
|
306 | |
|
307 | |
|
308 | |
|
309 | |
|
310 | |
|
311 | |
|
312 | |
|
313 | |
|
314 | |
|
315 | |
|
316 | |
|
317 | |
public static int createTask( ScmLogger logger, String synopsis, String release, boolean defaultTask, |
318 | |
String ccmAddr ) |
319 | |
throws ScmException |
320 | |
{ |
321 | 0 | if ( logger.isDebugEnabled() ) |
322 | |
{ |
323 | 0 | logger.debug( "Synergy : Entering createTask method of SynergyUtil" ); |
324 | |
} |
325 | |
|
326 | 0 | if ( synopsis == null || synopsis.equals( "" ) ) |
327 | |
{ |
328 | 0 | throw new ScmException( "A synopsis must be specified to create a task." ); |
329 | |
} |
330 | |
|
331 | 0 | Commandline cl = SynergyCCM.createTask( synopsis, release, defaultTask, ccmAddr ); |
332 | |
|
333 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
334 | 0 | SynergyCreateTaskConsumer stdout = new SynergyCreateTaskConsumer( logger ); |
335 | |
|
336 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
337 | |
|
338 | 0 | if ( logger.isDebugEnabled() ) |
339 | |
{ |
340 | 0 | logger.debug( "createTask returns " + stdout.getTask() ); |
341 | |
} |
342 | |
|
343 | 0 | return stdout.getTask(); |
344 | |
} |
345 | |
|
346 | |
|
347 | |
|
348 | |
|
349 | |
|
350 | |
|
351 | |
|
352 | |
|
353 | |
|
354 | |
public static void checkinDefaultTask( ScmLogger logger, String comment, String ccmAddr ) |
355 | |
throws ScmException |
356 | |
{ |
357 | 0 | if ( logger.isDebugEnabled() ) |
358 | |
{ |
359 | 0 | logger.debug( "Synergy : Entering checkinDefaultTask method" ); |
360 | |
} |
361 | |
|
362 | 0 | Commandline cl = SynergyCCM.checkinTask( "default", comment, ccmAddr ); |
363 | |
|
364 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
365 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
366 | |
|
367 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
368 | 0 | } |
369 | |
|
370 | |
|
371 | |
|
372 | |
|
373 | |
|
374 | |
|
375 | |
|
376 | |
|
377 | |
|
378 | |
|
379 | |
public static void checkinTask( ScmLogger logger, int taskNumber, String comment, String ccmAddr ) |
380 | |
throws ScmException |
381 | |
{ |
382 | 0 | if ( logger.isDebugEnabled() ) |
383 | |
{ |
384 | 0 | logger.debug( "Synergy : Entering checkinTask method" ); |
385 | |
} |
386 | |
|
387 | 0 | Commandline cl = SynergyCCM.checkinTask( "" + taskNumber, comment, ccmAddr ); |
388 | |
|
389 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
390 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
391 | |
|
392 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
393 | 0 | } |
394 | |
|
395 | |
|
396 | |
|
397 | |
|
398 | |
|
399 | |
|
400 | |
|
401 | |
|
402 | |
|
403 | |
public static void delete( ScmLogger logger, File file, String ccmAddr, boolean replace ) |
404 | |
throws ScmException |
405 | |
{ |
406 | 0 | if ( logger.isDebugEnabled() ) |
407 | |
{ |
408 | 0 | logger.debug( "Synergy : Entering delete method" ); |
409 | |
} |
410 | |
|
411 | 0 | List<File> list = new ArrayList<File>(); |
412 | 0 | list.add( file ); |
413 | |
|
414 | 0 | Commandline cl = SynergyCCM.delete( list, ccmAddr, replace ); |
415 | |
|
416 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
417 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
418 | |
|
419 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
420 | 0 | } |
421 | |
|
422 | |
|
423 | |
|
424 | |
|
425 | |
|
426 | |
|
427 | |
|
428 | |
|
429 | |
|
430 | |
public static void reconfigure( ScmLogger logger, String projectSpec, String ccmAddr ) |
431 | |
throws ScmException |
432 | |
{ |
433 | 0 | if ( logger.isDebugEnabled() ) |
434 | |
{ |
435 | 0 | logger.debug( "Synergy : Entering reconfigure method" ); |
436 | |
} |
437 | 0 | Commandline cl = SynergyCCM.reconfigure( projectSpec, ccmAddr ); |
438 | |
|
439 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
440 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
441 | |
|
442 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
443 | 0 | } |
444 | |
|
445 | |
|
446 | |
|
447 | |
|
448 | |
|
449 | |
|
450 | |
|
451 | |
|
452 | |
|
453 | |
public static void reconfigureProperties( ScmLogger logger, String projectSpec, String ccmAddr ) |
454 | |
throws ScmException |
455 | |
{ |
456 | 0 | if ( logger.isDebugEnabled() ) |
457 | |
{ |
458 | 0 | logger.debug( "Synergy : Entering reconfigureProperties method" ); |
459 | |
} |
460 | 0 | Commandline cl = SynergyCCM.reconfigureProperties( projectSpec, ccmAddr ); |
461 | |
|
462 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
463 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
464 | |
|
465 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
466 | 0 | } |
467 | |
|
468 | |
|
469 | |
|
470 | |
|
471 | |
|
472 | |
|
473 | |
|
474 | |
|
475 | |
|
476 | |
public static void reconcileUwa( ScmLogger logger, String projectSpec, String ccmAddr ) |
477 | |
throws ScmException |
478 | |
{ |
479 | 0 | if ( logger.isDebugEnabled() ) |
480 | |
{ |
481 | 0 | logger.debug( "Synergy : Entering reconcileUwa method" ); |
482 | |
} |
483 | 0 | Commandline cl = SynergyCCM.reconcileUwa( projectSpec, ccmAddr ); |
484 | |
|
485 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
486 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
487 | |
|
488 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
489 | 0 | } |
490 | |
|
491 | |
|
492 | |
|
493 | |
|
494 | |
|
495 | |
|
496 | |
|
497 | |
|
498 | |
|
499 | |
public static void reconcileUdb( ScmLogger logger, String projectSpec, String ccmAddr ) |
500 | |
throws ScmException |
501 | |
{ |
502 | 0 | if ( logger.isDebugEnabled() ) |
503 | |
{ |
504 | 0 | logger.debug( "Synergy : Entering reconcileUdb method" ); |
505 | |
} |
506 | 0 | Commandline cl = SynergyCCM.reconcileUdb( projectSpec, ccmAddr ); |
507 | |
|
508 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
509 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
510 | |
|
511 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
512 | 0 | } |
513 | |
|
514 | |
|
515 | |
|
516 | |
|
517 | |
|
518 | |
|
519 | |
|
520 | |
|
521 | |
|
522 | |
public static void checkoutFiles( ScmLogger logger, List<File> files, String ccmAddr ) |
523 | |
throws ScmException |
524 | |
{ |
525 | 0 | if ( logger.isDebugEnabled() ) |
526 | |
{ |
527 | 0 | logger.debug( "Synergy : Entering checkoutFiles files method" ); |
528 | |
} |
529 | |
|
530 | 0 | Commandline cl = SynergyCCM.checkoutFiles( files, ccmAddr ); |
531 | |
|
532 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
533 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
534 | |
|
535 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
536 | 0 | } |
537 | |
|
538 | |
|
539 | |
|
540 | |
|
541 | |
|
542 | |
|
543 | |
|
544 | |
|
545 | |
|
546 | |
|
547 | |
|
548 | |
public static void checkoutProject( ScmLogger logger, File directory, String projectSpec, ScmVersion version, |
549 | |
String purpose, String release, String ccmAddr ) |
550 | |
throws ScmException |
551 | |
{ |
552 | 0 | if ( logger.isDebugEnabled() ) |
553 | |
{ |
554 | 0 | logger.debug( "Synergy : Entering checkoutProject project method" ); |
555 | |
} |
556 | |
|
557 | 0 | Commandline cl = SynergyCCM.checkoutProject( directory, projectSpec, version, purpose, release, ccmAddr ); |
558 | |
|
559 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
560 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
561 | |
|
562 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
563 | |
|
564 | 0 | } |
565 | |
|
566 | |
|
567 | |
|
568 | |
|
569 | |
|
570 | |
|
571 | |
|
572 | |
|
573 | |
|
574 | |
|
575 | |
|
576 | |
public static void checkinProject( ScmLogger logger, String projectSpec, String comment, String ccmAddr ) |
577 | |
throws ScmException |
578 | |
{ |
579 | 0 | if ( logger.isDebugEnabled() ) |
580 | |
{ |
581 | 0 | logger.debug( "Synergy : Entering checkinProject project method" ); |
582 | |
} |
583 | |
|
584 | 0 | Commandline cl = SynergyCCM.checkinProject( projectSpec, comment, ccmAddr ); |
585 | |
|
586 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
587 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
588 | |
|
589 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
590 | |
|
591 | 0 | } |
592 | |
|
593 | |
|
594 | |
|
595 | |
|
596 | |
|
597 | |
|
598 | |
|
599 | |
|
600 | |
|
601 | |
public static void checkinFiles( ScmLogger logger, List<File> files, String comment, String ccmAddr ) |
602 | |
throws ScmException |
603 | |
{ |
604 | 0 | if ( logger.isDebugEnabled() ) |
605 | |
{ |
606 | 0 | logger.debug( "Synergy : Entering checkinFiles project method" ); |
607 | |
} |
608 | |
|
609 | 0 | Commandline cl = SynergyCCM.checkinFiles( files, comment, ccmAddr ); |
610 | |
|
611 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
612 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
613 | |
|
614 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
615 | |
|
616 | 0 | } |
617 | |
|
618 | |
|
619 | |
|
620 | |
|
621 | |
|
622 | |
|
623 | |
|
624 | |
|
625 | |
|
626 | |
|
627 | |
public static int getDefaultTask( ScmLogger logger, String ccmAddr ) |
628 | |
throws ScmException |
629 | |
{ |
630 | 0 | if ( logger.isDebugEnabled() ) |
631 | |
{ |
632 | 0 | logger.debug( "Synergy : Entering getDefaultTask method" ); |
633 | |
} |
634 | |
|
635 | 0 | Commandline cl = SynergyCCM.showDefaultTask( ccmAddr ); |
636 | |
|
637 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
638 | 0 | SynergyShowDefaultTaskConsumer stdout = new SynergyShowDefaultTaskConsumer(logger); |
639 | |
|
640 | 0 | int errorCode = executeSynergyCommand( logger, cl, stderr, stdout, false ); |
641 | |
|
642 | 0 | if ( logger.isDebugEnabled() ) |
643 | |
{ |
644 | 0 | logger.debug( "getDefaultTask returns " + stdout.getTask() + " with error code " + errorCode ); |
645 | |
} |
646 | |
|
647 | 0 | return stdout.getTask(); |
648 | |
} |
649 | |
|
650 | |
|
651 | |
|
652 | |
|
653 | |
|
654 | |
|
655 | |
|
656 | |
|
657 | |
|
658 | |
public static void setDefaultTask( ScmLogger logger, int task, String ccmAddr ) |
659 | |
throws ScmException |
660 | |
{ |
661 | 0 | if ( logger.isDebugEnabled() ) |
662 | |
{ |
663 | 0 | logger.debug( "Synergy : Entering setDefaultTask method" ); |
664 | |
} |
665 | |
|
666 | 0 | Commandline cl = SynergyCCM.setDefaultTask( task, ccmAddr ); |
667 | |
|
668 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
669 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
670 | |
|
671 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
672 | 0 | } |
673 | |
|
674 | |
|
675 | |
|
676 | |
|
677 | |
|
678 | |
|
679 | |
|
680 | |
|
681 | |
|
682 | |
public static void synchronize( ScmLogger logger, String projectSpec, String ccmAddr ) |
683 | |
throws ScmException |
684 | |
{ |
685 | 0 | if ( logger.isDebugEnabled() ) |
686 | |
{ |
687 | 0 | logger.debug( "Synergy : Entering synchronize method" ); |
688 | |
} |
689 | |
|
690 | 0 | Commandline cl = SynergyCCM.synchronize( projectSpec, ccmAddr ); |
691 | |
|
692 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
693 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
694 | |
|
695 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
696 | 0 | } |
697 | |
|
698 | |
|
699 | |
|
700 | |
|
701 | |
|
702 | |
|
703 | |
|
704 | |
|
705 | |
|
706 | |
public static File getWorkArea( ScmLogger logger, String projectSpec, String ccmAddr ) |
707 | |
throws ScmException |
708 | |
{ |
709 | 0 | if ( logger.isDebugEnabled() ) |
710 | |
{ |
711 | 0 | logger.debug( "Synergy : Entering getWorkArea method" ); |
712 | |
} |
713 | |
|
714 | 0 | Commandline cl = SynergyCCM.showWorkArea( projectSpec, ccmAddr ); |
715 | |
|
716 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
717 | 0 | SynergyWorkareaConsumer stdout = new SynergyWorkareaConsumer( logger ); |
718 | |
|
719 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
720 | |
|
721 | 0 | if ( logger.isDebugEnabled() ) |
722 | |
{ |
723 | 0 | logger.debug( "Synergy : getWorkArea returns " + stdout.getWorkAreaPath() ); |
724 | |
} |
725 | |
|
726 | 0 | return stdout.getWorkAreaPath(); |
727 | |
} |
728 | |
|
729 | |
|
730 | |
|
731 | |
|
732 | |
|
733 | |
|
734 | |
|
735 | |
|
736 | |
public static void stop( ScmLogger logger, String ccmAddr ) |
737 | |
throws ScmException |
738 | |
{ |
739 | 0 | if ( logger.isDebugEnabled() ) |
740 | |
{ |
741 | 0 | logger.debug( "Synergy : Entering stop method" ); |
742 | |
} |
743 | 0 | Commandline cl = SynergyCCM.stop( ccmAddr ); |
744 | |
|
745 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
746 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
747 | |
|
748 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
749 | 0 | } |
750 | |
|
751 | |
|
752 | |
|
753 | |
|
754 | |
|
755 | |
|
756 | |
|
757 | |
|
758 | |
|
759 | |
|
760 | |
public static String start( ScmLogger logger, String username, String password, SynergyRole role ) |
761 | |
throws ScmException |
762 | |
{ |
763 | 0 | if ( logger.isDebugEnabled() ) |
764 | |
{ |
765 | 0 | logger.debug( "Synergy : Entering start method" ); |
766 | |
} |
767 | |
|
768 | 0 | if ( username == null ) |
769 | |
{ |
770 | 0 | throw new ScmException( "username can't be null" ); |
771 | |
} |
772 | |
|
773 | 0 | if ( password == null ) |
774 | |
{ |
775 | 0 | throw new ScmException( "password can't be null" ); |
776 | |
} |
777 | |
|
778 | 0 | Commandline cl = SynergyCCM.start( username, password, role ); |
779 | |
|
780 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
781 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
782 | |
|
783 | |
|
784 | |
|
785 | 0 | int exitCode = executeSynergyCommand( logger, cl, stderr, stdout, false ); |
786 | |
|
787 | 0 | if ( logger.isDebugEnabled() ) |
788 | |
{ |
789 | 0 | logger.debug( "Synergy : start returns with error code " + exitCode ); |
790 | |
} |
791 | |
|
792 | 0 | if ( exitCode != 0 ) |
793 | |
{ |
794 | 0 | cl = SynergyCCM.startRemote( username, password, role ); |
795 | |
|
796 | 0 | stderr = new CommandLineUtils.StringStreamConsumer(); |
797 | 0 | stdout = new CommandLineUtils.StringStreamConsumer(); |
798 | |
|
799 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
800 | |
} |
801 | |
|
802 | 0 | return stdout.getOutput(); |
803 | |
} |
804 | |
|
805 | |
|
806 | |
|
807 | |
|
808 | |
|
809 | |
|
810 | |
|
811 | |
|
812 | |
public static String delimiter( ScmLogger logger, String ccmAddr ) |
813 | |
throws ScmException |
814 | |
{ |
815 | 0 | if ( logger.isDebugEnabled() ) |
816 | |
{ |
817 | 0 | logger.debug( "Synergy : Entering delimiter method" ); |
818 | |
} |
819 | |
|
820 | 0 | Commandline cl = SynergyCCM.delimiter( ccmAddr ); |
821 | |
|
822 | 0 | CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); |
823 | 0 | CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); |
824 | |
|
825 | 0 | executeSynergyCommand( logger, cl, stderr, stdout, true ); |
826 | |
|
827 | 0 | return stdout.getOutput(); |
828 | |
} |
829 | |
|
830 | |
|
831 | |
|
832 | |
|
833 | |
|
834 | |
|
835 | |
|
836 | |
|
837 | |
|
838 | |
|
839 | |
|
840 | |
|
841 | |
protected static int executeSynergyCommand( ScmLogger logger, Commandline cl, StringStreamConsumer stderr, |
842 | |
StreamConsumer stdout, boolean failOnError ) |
843 | |
throws ScmException |
844 | |
{ |
845 | |
int exitCode; |
846 | |
|
847 | |
try |
848 | |
{ |
849 | 0 | if ( logger.isDebugEnabled() ) |
850 | |
{ |
851 | 0 | logger.debug( "Executing: " + cl.toString() ); |
852 | |
} |
853 | 0 | exitCode = CommandLineUtils.executeCommandLine( cl, stdout, stderr ); |
854 | |
} |
855 | 0 | catch ( CommandLineException ex ) |
856 | |
{ |
857 | 0 | throw new ScmException( "Error while executing synergy command [" + cl.toString() + "].", ex ); |
858 | 0 | } |
859 | |
|
860 | 0 | if ( logger.isDebugEnabled() ) |
861 | |
{ |
862 | 0 | logger.debug( "Exit code :" + exitCode ); |
863 | |
} |
864 | 0 | if ( stdout instanceof StringStreamConsumer ) |
865 | |
{ |
866 | 0 | if ( logger.isDebugEnabled() ) |
867 | |
{ |
868 | 0 | logger.debug( "STDOUT :" + ( (StringStreamConsumer) stdout ).getOutput() ); |
869 | |
} |
870 | |
} |
871 | |
else |
872 | |
{ |
873 | 0 | if ( logger.isDebugEnabled() ) |
874 | |
{ |
875 | 0 | logger.debug( "STDOUT : unavailable" ); |
876 | |
} |
877 | |
} |
878 | 0 | if ( logger.isDebugEnabled() ) |
879 | |
{ |
880 | 0 | logger.debug( "STDERR :" + stderr.getOutput() ); |
881 | |
} |
882 | |
|
883 | 0 | if ( exitCode != 0 && failOnError ) |
884 | |
{ |
885 | 0 | if ( stdout instanceof StringStreamConsumer ) |
886 | |
{ |
887 | 0 | throw new ScmException( "Commandeline = " + cl.toString() + "\nSTDOUT = " |
888 | |
+ ( (StringStreamConsumer) stdout ).getOutput() + "\nSTDERR = " + stderr.getOutput() + "\n" ); |
889 | |
} |
890 | |
else |
891 | |
{ |
892 | 0 | throw new ScmException( "Commandeline = " + cl.toString() + "\nSTDOUT = unavailable" + "\nSTDERR = " |
893 | |
+ stderr.getOutput() + "\n" ); |
894 | |
} |
895 | |
} |
896 | |
|
897 | 0 | return exitCode; |
898 | |
} |
899 | |
|
900 | |
} |