View Javadoc

1   /**
2      This file is part of GoldenGate Project (named also GoldenGate or GG).
3   
4      Copyright 2009, Frederic Bregier, and individual contributors by the @author
5      tags. See the COPYRIGHT.txt in the distribution for a full listing of
6      individual contributors.
7   
8      All GoldenGate Project is free software: you can redistribute it and/or 
9      modify it under the terms of the GNU General Public License as published 
10     by the Free Software Foundation, either version 3 of the License, or
11     (at your option) any later version.
12  
13     GoldenGate is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17  
18     You should have received a copy of the GNU General Public License
19     along with GoldenGate .  If not, see <http://www.gnu.org/licenses/>.
20   */
21  package openr66.context.task;
22  
23  import goldengate.common.logging.GgInternalLogger;
24  import goldengate.common.logging.GgInternalLoggerFactory;
25  import openr66.context.R66Session;
26  import openr66.context.task.exception.OpenR66RunnerErrorException;
27  
28  /**
29   * This enum class references all available tasks.
30   *
31   * If a new task type is to be created, this is the place where it should be
32   * referenced.
33   *
34   * @author Frederic Bregier
35   *
36   */
37  public enum TaskType {
38      LOG, MOVE, MOVERENAME, COPY, COPYRENAME, EXEC, EXECMOVE, LINKRENAME, TRANSFER,
39      VALIDFILEPATH, DELETE, TAR, ZIP, EXECOUTPUT, RESCHEDULE, EXECJAVA;
40  
41      public int type;
42  
43      public String name;
44      /**
45       * Internal Logger
46       */
47      private static final GgInternalLogger logger = GgInternalLoggerFactory
48              .getLogger(TaskType.class);
49      
50      private TaskType() {
51          type = ordinal();
52          name = name();
53      }
54  
55      /**
56       *
57       * @param type
58       * @param argRule
59       * @param delay
60       * @param session
61       * @return the corresponding AbstractTask
62       * @throws OpenR66RunnerErrorException
63       */
64      public static AbstractTask getTaskFromId(TaskType type, String argRule,
65              int delay, R66Session session)
66              throws OpenR66RunnerErrorException {
67          switch (type) {
68              case LOG:
69                  return new LogTask(argRule, delay, session.getRunner()
70                          .getFileInformation(), session);
71              case MOVE:
72                  return new MoveTask(argRule, delay, session.getRunner()
73                          .getFileInformation(), session);
74              case MOVERENAME:
75                  return new MoveRenameTask(argRule, delay, session.getRunner()
76                          .getFileInformation(), session);
77              case COPY:
78                  return new CopyTask(argRule, delay, session.getRunner()
79                          .getFileInformation(), session);
80              case COPYRENAME:
81                  return new CopyRenameTask(argRule, delay, session.getRunner()
82                          .getFileInformation(), session);
83              case EXEC:
84                  return new ExecTask(argRule, delay, session.getRunner()
85                          .getFileInformation(), session);
86              case EXECMOVE:
87                  return new ExecMoveTask(argRule, delay, session.getRunner()
88                          .getFileInformation(), session);
89              case LINKRENAME:
90                  return new LinkRenameTask(argRule, delay, session.getRunner()
91                          .getFileInformation(), session);
92              case TRANSFER:
93                  return new TransferTask(argRule, delay, session.getRunner()
94                          .getFileInformation(), session);
95              case VALIDFILEPATH:
96                  return new ValidFilePathTask(argRule, delay, session.getRunner()
97                          .getFileInformation(), session);
98              case DELETE:
99                  return new DeleteTask(argRule, delay, session.getRunner()
100                         .getFileInformation(), session);
101             case TAR:
102                 return new TarTask(argRule, delay, session.getRunner()
103                         .getFileInformation(), session);
104             case ZIP:
105                 return new ZipTask(argRule, delay, session.getRunner()
106                         .getFileInformation(), session);
107             case EXECOUTPUT:
108                 return new ExecOutputTask(argRule, delay, session.getRunner().
109                         getFileInformation(), session);
110             case RESCHEDULE:
111                 return new RescheduleTransferTask(argRule, delay, session.getRunner().
112                         getFileInformation(), session);
113             case EXECJAVA:
114                 return new ExecJavaTask(argRule, delay, session.getRunner().
115                         getFileInformation(), session);
116             default:
117                 logger.error("name unknown: " + type.name);
118                 throw new OpenR66RunnerErrorException("Unvalid Task: " +
119                         type.name);
120         }
121     }
122 
123     /**
124      *
125      * @param name
126      * @param argRule
127      * @param delay
128      * @param session
129      * @return the corresponding AbstractTask
130      * @throws OpenR66RunnerErrorException
131      */
132     public static AbstractTask getTaskFromId(String name, String argRule,
133             int delay, R66Session session) throws OpenR66RunnerErrorException {
134         TaskType type;
135         try {
136             type = valueOf(name);
137         } catch (NullPointerException e) {
138             logger.error("name empty " + name);
139             throw new OpenR66RunnerErrorException("Unvalid Task: " + name);
140         } catch (IllegalArgumentException e) {
141             logger.error("name unknown: " + name);
142             throw new OpenR66RunnerErrorException("Unvalid Task: " + name);
143         }
144         return getTaskFromId(type, argRule, delay, session);
145     }
146 }