Eclipseplugins
GeneratorFactory.java
1 package com.proalpha.pds.generator;
2 
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 
6 import com.proalpha.pds.exception.ProALPHANotAvailableException;
7 import com.proalpha.pds.paconnector.PaProject;
8 import com.proalpha.pds.paconnector.parameter.ParameterFactory;
9 import com.proalpha.pds.paconnector.parameter.StartparameterReader;
10 import com.proalpha.pds.paconnector.repository.RepositoryDelegate;
11 import com.proalpha.pds.paconnector.repository.RepositoryFactory;
12 import com.proalpha.pds.paconnector.repository.RepositoryInformations;
13 import com.proalpha.pds.paconnector.userexit.UserExitDelegate;
14 import com.proalpha.pds.paconnector.userexit.UserExitFactory;
15 import com.proalpha.pds.templates.data.IGeneratorDataContainer;
16 
17 public class GeneratorFactory {
18 
19  private static final Logger logger = LoggerFactory.getLogger(GeneratorFactory.class);
20 
21  private RepositoryDelegate repositoryDelegate;
22  private RepositoryInformations repositoryInformations;
23  private StartparameterReader startparameterReader;
24  private UserExitDelegate userExitDelegate;
25 
26  private UserExitFactory userExitFactory;
27 
28  public GeneratorFactory() {
29  userExitFactory = new UserExitFactory();
30  }
31 
32  public BalpGenerator createBalpGenerator(IGeneratorDataContainer datacontainer) throws Exception {
33  PaProject paProject = (PaProject) datacontainer.getPaProject();
34  UserExitDelegate userExitDelegate = getUserExitDelegate(paProject);
35  StartparameterReader startparameterReader = getStartparameterReader(paProject);
36  return new BalpGenerator(datacontainer, userExitDelegate, startparameterReader);
37  }
38 
39  public OOABLExitFileGenerator createOOABLExitFileGenerator(IGeneratorDataContainer datacontainer,
40  String templateGeneratorName) {
41  PaProject paProject = (PaProject) datacontainer.getPaProject();
42  RepositoryDelegate repositoryDelegate = getRepositoryDelegate(paProject);
43  RepositoryInformations repositoryInformations = getRepositoryInformations(paProject);
44 
45  return new OOABLExitFileGenerator(datacontainer, templateGeneratorName, repositoryDelegate,
46  repositoryInformations);
47  }
48 
49  public TriggerFileGenerator createTriggerFileGenerator(IGeneratorDataContainer datacontainer) {
50  return new TriggerFileGenerator(datacontainer);
51  }
52 
53  public UserExitFileGenerator createUserExitFileGenerator(IGeneratorDataContainer datacontainer) throws Exception {
54  UserExitDelegate userExitDelegate = getUserExitDelegate((PaProject) datacontainer.getPaProject());
55 
56  return new UserExitFileGenerator(datacontainer, userExitDelegate);
57 
58  }
59 
60  private RepositoryDelegate getRepositoryDelegate(PaProject paProject) {
61 
62  if (repositoryDelegate == null) {
63  try {
64  RepositoryFactory factory = new RepositoryFactory();
65  repositoryDelegate = factory.createRepositoryDelegate(paProject);
66  } catch (ProALPHANotAvailableException e) {
67  logger.error(e.getMessage(), e);
68  }
69  }
70 
71  return repositoryDelegate;
72  }
73 
74  private RepositoryInformations getRepositoryInformations(PaProject paProject) {
75 
76  if (repositoryInformations == null) {
77  try {
78  RepositoryFactory factory = new RepositoryFactory();
79  repositoryInformations = factory.createRepositoryInformations(paProject);
80  } catch (ProALPHANotAvailableException e) {
81  logger.error(e.getMessage(), e);
82  }
83  }
84  return repositoryInformations;
85  }
86 
87  private StartparameterReader getStartparameterReader(PaProject project) {
88 
89  if (startparameterReader == null)
90  try {
91  ParameterFactory parameterFactory = new ParameterFactory();
92  startparameterReader = parameterFactory.createStartparameterReader(project);
93  } catch (ProALPHANotAvailableException e) {
94  logger.error(e.getMessage(), e);
95  }
96  return startparameterReader;
97  }
98 
99  private UserExitDelegate getUserExitDelegate(PaProject project) {
100 
101  if (userExitDelegate == null) {
102  try {
103  userExitDelegate = userExitFactory.createUserExitDelegate(project, getStartparameterReader(project));
104  } catch (ProALPHANotAvailableException e) {
105  logger.error(e.getMessage(), e);
106  }
107  }
108 
109  return userExitDelegate;
110  }
111 
112 }