Skip to content

Commit a4a4fda

Browse files
committed
abstract factory classes
1 parent c334edc commit a4a4fda

6 files changed

Lines changed: 63 additions & 90 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package zos.shell.controller.container;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
import java.util.function.Supplier;
6+
7+
public abstract class AbstractController<K> {
8+
9+
private final Map<K, Object> controllers = new HashMap<>();
10+
11+
public <T> T getOrCreateController(final K key,
12+
final Class<T> controllerClass,
13+
final Supplier<T> creator) {
14+
15+
var controller = controllerClass.cast(this.controllers.get(key));
16+
if (controller != null) {
17+
return controller;
18+
}
19+
20+
T newController = creator.get();
21+
this.controllers.put(key, newController);
22+
return newController;
23+
}
24+
25+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package zos.shell.controller.container;
2+
3+
import zos.shell.controller.dependency.AbstractDependencyController;
4+
import zos.shell.controller.dependency.Dependency;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
import java.util.function.Supplier;
9+
10+
public abstract class AbstractDependencyControllerFactory<K> {
11+
12+
private final Map<K, Object> controllers = new HashMap<>();
13+
14+
public <T extends AbstractDependencyController> T getOrCreateController(
15+
final K key,
16+
final Class<T> controllerClass,
17+
final Dependency dependency,
18+
final Supplier<T> creator) {
19+
20+
T controller = controllerClass.cast(this.controllers.get(key));
21+
if (controller != null && !controller.isNotValid(dependency)) {
22+
return controller;
23+
}
24+
25+
final T newController = creator.get();
26+
this.controllers.put(key, newController);
27+
return newController;
28+
}
29+
30+
}

‎src/main/java/zos/shell/controller/container/impl/ChangeControllerFactory.java‎

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,17 @@
66
import zos.shell.controller.ChangeConnController;
77
import zos.shell.controller.ChangeDirController;
88
import zos.shell.controller.ChangeWinController;
9+
import zos.shell.controller.container.AbstractController;
910
import zos.shell.controller.container.type.ChangeControllerType;
1011
import zos.shell.service.change.ChangeConnService;
1112
import zos.shell.service.change.ChangeDirService;
1213
import zos.shell.service.change.ChangeWinService;
1314
import zos.shell.service.terminal.TerminalOutputService;
1415

15-
import java.util.HashMap;
16-
import java.util.Map;
17-
import java.util.function.Supplier;
18-
19-
public class ChangeControllerFactory {
16+
public class ChangeControllerFactory extends AbstractController<ChangeControllerType.Name> {
2017

2118
private static final Logger LOG = LoggerFactory.getLogger(ChangeControllerFactory.class);
2219

23-
private final Map<ChangeControllerType.Name, Object> controllers = new HashMap<>();
24-
25-
public <T> T getOrCreateController(final ChangeControllerType.Name key,
26-
final Class<T> controllerClass,
27-
final Supplier<T> creator) {
28-
29-
var controller = controllerClass.cast(this.controllers.get(key));
30-
if (controller != null) {
31-
return controller;
32-
}
33-
34-
T newController = creator.get();
35-
this.controllers.put(key, newController);
36-
return newController;
37-
}
38-
3920
public ChangeConnController getChangeConnectionController(final TextTerminal<?> terminal) {
4021
LOG.debug("*** getChangeConnectionController ***");
4122
return this.getOrCreateController(

‎src/main/java/zos/shell/controller/container/impl/DatasetControllerFactory.java‎

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import org.slf4j.Logger;
55
import org.slf4j.LoggerFactory;
66
import zos.shell.controller.*;
7+
import zos.shell.controller.container.AbstractDependencyControllerFactory;
78
import zos.shell.controller.container.type.DatasetControllerType;
8-
import zos.shell.controller.dependency.AbstractDependencyController;
99
import zos.shell.controller.dependency.Dependency;
1010
import zos.shell.service.checksum.CheckSumService;
1111
import zos.shell.service.dsn.concat.ConcatService;
@@ -29,32 +29,10 @@
2929
import zowe.client.sdk.zosfiles.dsn.methods.DsnList;
3030
import zowe.client.sdk.zosfiles.dsn.methods.DsnWrite;
3131

32-
import java.util.HashMap;
33-
import java.util.Map;
34-
import java.util.function.Supplier;
35-
36-
public class DatasetControllerFactory {
32+
public class DatasetControllerFactory extends AbstractDependencyControllerFactory<DatasetControllerType.Name> {
3733

3834
private static final Logger LOG = LoggerFactory.getLogger(DatasetControllerFactory.class);
3935

40-
private final Map<DatasetControllerType.Name, Object> controllers = new HashMap<>();
41-
42-
public <T extends AbstractDependencyController> T getOrCreateController(
43-
final DatasetControllerType.Name key,
44-
final Class<T> controllerClass,
45-
final Dependency dependency,
46-
final Supplier<T> creator) {
47-
48-
T controller = controllerClass.cast(this.controllers.get(key));
49-
if (controller != null && !controller.isNotValid(dependency)) {
50-
return controller;
51-
}
52-
53-
final T newController = creator.get();
54-
this.controllers.put(key, newController);
55-
return newController;
56-
}
57-
5836

5937
public ConcatController getConcatController(final ZosConnection connection, final long timeout) {
6038
LOG.debug("*** getConcatController ***");

‎src/main/java/zos/shell/controller/container/impl/GlobalControllerFactory.java‎

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,11 @@
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
5+
import zos.shell.controller.container.AbstractController;
56
import zos.shell.controller.container.type.GlobalControllerType;
67

7-
import java.util.HashMap;
8-
import java.util.Map;
9-
import java.util.function.Supplier;
10-
11-
public class GlobalControllerFactory {
8+
public class GlobalControllerFactory extends AbstractController<GlobalControllerType.Name> {
129

1310
private static final Logger LOG = LoggerFactory.getLogger(GlobalControllerFactory.class);
1411

15-
private final Map<GlobalControllerType.Name, Object> controllers = new HashMap<>();
16-
17-
public <T> T getOrCreateController(final GlobalControllerType.Name key,
18-
final Class<T> controllerClass,
19-
final Supplier<T> creator) {
20-
21-
var controller = controllerClass.cast(this.controllers.get(key));
22-
if (controller != null) {
23-
return controller;
24-
}
25-
26-
T newController = creator.get();
27-
this.controllers.put(key, newController);
28-
return newController;
29-
}
30-
3112
}

‎src/main/java/zos/shell/controller/container/impl/JobControllerFactory.java‎

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,12 @@
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
5+
import zos.shell.controller.container.AbstractDependencyControllerFactory;
56
import zos.shell.controller.container.type.JobControllerType;
6-
import zos.shell.controller.dependency.AbstractDependencyController;
7-
import zos.shell.controller.dependency.Dependency;
87

9-
import java.util.HashMap;
10-
import java.util.Map;
11-
import java.util.function.Supplier;
12-
13-
public class JobControllerFactory {
8+
public class JobControllerFactory extends AbstractDependencyControllerFactory<JobControllerType.Name> {
149

1510
private static final Logger LOG = LoggerFactory.getLogger(JobControllerFactory.class);
1611

17-
private final Map<JobControllerType.Name, Object> controllers = new HashMap<>();
18-
19-
public <T extends AbstractDependencyController> T getOrCreateController(
20-
final JobControllerType.Name key,
21-
final Class<T> controllerClass,
22-
final Dependency dependency,
23-
final Supplier<T> creator) {
24-
25-
T controller = controllerClass.cast(this.controllers.get(key));
26-
if (controller != null && !controller.isNotValid(dependency)) {
27-
return controller;
28-
}
29-
30-
final T newController = creator.get();
31-
this.controllers.put(key, newController);
32-
return newController;
33-
}
3412

3513
}

0 commit comments

Comments
 (0)