View Javadoc

1   package fr.in2p3.jsaga.command;
2   
3   import org.apache.commons.cli.*;
4   import org.ogf.saga.error.*;
5   import org.ogf.saga.logicalfile.LogicalFile;
6   import org.ogf.saga.logicalfile.LogicalFileFactory;
7   import org.ogf.saga.namespace.Flags;
8   import org.ogf.saga.session.Session;
9   import org.ogf.saga.session.SessionFactory;
10  import org.ogf.saga.url.URL;
11  import org.ogf.saga.url.URLFactory;
12  
13  /* ***************************************************
14  * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
15  * ***             http://cc.in2p3.fr/             ***
16  * ***************************************************
17  * File:   NSLogicalLocation
18  * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
19  * Date:   12 sept. 2007
20  * ***************************************************
21  * Description:                                      */
22  /**
23   *
24   */
25  public class NSLogicalLocation extends AbstractCommand {
26      private static final String OPT_HELP = "h", LONGOPT_HELP = "help";
27      private static final String OPT_CREATE = "c", LONGOPT_CREATE = "create";
28      private static final String OPT_REGISTER = "r", LONGOPT_REGISTER = "register";
29      private static final String OPT_UNREGISTER = "u", LONGOPT_UNREGISTER = "unregister";
30      private static final String OPT_LIST = "l", LONGOPT_LIST = "list";
31  
32      public NSLogicalLocation() {
33          super("jsaga-logical-location", new String[]{"Logical URL"}, new String[]{OPT_HELP, LONGOPT_HELP});
34      }
35  
36      public static void main(String[] args) throws Exception {
37          NSLogicalLocation command = new NSLogicalLocation();
38          CommandLine line = command.parse(args);
39          if (line.hasOption(OPT_HELP))
40          {
41              command.printHelpAndExit(null);
42          }
43          else if (line.hasOption(OPT_REGISTER))
44          {
45              LogicalFile file;
46              if (line.hasOption(OPT_CREATE)) {
47                  file = command.getLogicalFile(Flags.CREATE.or(Flags.EXCL));
48              } else {
49                  file = command.getLogicalFile();
50              }
51              file.addLocation(URLFactory.createURL(line.getOptionValue(OPT_REGISTER)));
52              file.close();
53              System.exit(0);
54          }
55          else if (line.hasOption(OPT_UNREGISTER))
56          {
57              LogicalFile file = command.getLogicalFile();
58              file.removeLocation(URLFactory.createURL(line.getOptionValue(OPT_UNREGISTER)));
59              if (file.listLocations().size() == 0) {
60                  file.remove();
61              }
62              file.close();
63              System.exit(0);
64          }
65          else if (line.hasOption(OPT_LIST))
66          {
67              LogicalFile file = command.getLogicalFile();
68              for (URL location : file.listLocations()) {
69                  System.out.println(location);
70              }
71              file.close();
72              System.exit(0);
73          }
74      }
75  
76      private LogicalFile getLogicalFile() throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, DoesNotExistException, TimeoutException, NoSuccessException, IncorrectStateException, AlreadyExistsException {
77          return this.getLogicalFile(Flags.NONE.getValue());
78      }
79      private LogicalFile getLogicalFile(int flags) throws NotImplementedException, IncorrectURLException, AuthenticationFailedException, AuthorizationFailedException, PermissionDeniedException, BadParameterException, DoesNotExistException, TimeoutException, NoSuccessException, IncorrectStateException, AlreadyExistsException {
80          URL logicalUrl = URLFactory.createURL(m_nonOptionValues[0]);
81          Session session = SessionFactory.createSession(true);
82          return LogicalFileFactory.createLogicalFile(session, logicalUrl, flags);
83      }
84  
85      protected Options createOptions() {
86          Options opt = new Options();
87  
88          // command group
89          OptionGroup group = new OptionGroup();
90          group.setRequired(true);
91          {
92              group.addOption(OptionBuilder.withDescription("Display this help and exit")
93                      .withLongOpt(LONGOPT_HELP)
94                      .create(OPT_HELP));
95              group.addOption(OptionBuilder.withDescription("Register replica <Physical URL>")
96                      .hasArg()
97                      .withArgName("Physical URL")
98                      .withLongOpt(LONGOPT_REGISTER)
99                      .create(OPT_REGISTER));
100             group.addOption(OptionBuilder.withDescription("Unregister replica <Physical URL>")
101                     .hasArg()
102                     .withArgName("Physical URL")
103                     .withLongOpt(LONGOPT_UNREGISTER)
104                     .create(OPT_UNREGISTER));
105             group.addOption(OptionBuilder.withDescription("List replicas <Physical URL>")
106                     .withLongOpt(LONGOPT_LIST)
107                     .create(OPT_LIST));
108         }
109         opt.addOptionGroup(group);
110 
111         // optionan
112         opt.addOption(OptionBuilder.withDescription("Create logical file")
113                 .withLongOpt(LONGOPT_CREATE)
114                 .create(OPT_CREATE));
115 
116         return opt;
117     }
118 }