View Javadoc
1   package io.github.magwas.inez;
2   
3   import java.io.IOException;
4   import java.util.Collection;
5   import java.util.Optional;
6   import java.util.Set;
7   import java.util.stream.Stream;
8   
9   import org.springframework.beans.factory.annotation.Autowired;
10  import org.springframework.stereotype.Component;
11  
12  import io.github.magwas.inez.element.BridiElement;
13  import io.github.magwas.inez.element.BridiElementFactory;
14  import io.github.magwas.inez.element.BridiElementSystemInitializationService;
15  import io.github.magwas.inez.element.ElementConstants;
16  import io.github.magwas.inez.query.CreateBridisFromDefinitionService;
17  import io.github.magwas.inez.query.CreateBridisFromQueryService;
18  import io.github.magwas.inez.query.QueryProcessorService;
19  import io.github.magwas.inez.storage.BridiStoreChangeListenersService;
20  import io.github.magwas.inez.storage.BridiStoreHistoryRepository;
21  import io.github.magwas.inez.storage.CreateBridiFromSumtiService;
22  import io.github.magwas.inez.storage.CreateSumtiService;
23  import io.github.magwas.inez.storage.DeleteBridiService;
24  import io.github.magwas.inez.storage.FindAllByRepresentationService;
25  import io.github.magwas.inez.storage.FindAllIdByRepresentationService;
26  import io.github.magwas.inez.storage.FindBridiByIdService;
27  import io.github.magwas.inez.storage.GetBridiIdBySelbriAndSumtiIdsService;
28  import io.github.magwas.inez.storage.SaveBridiService;
29  import io.github.magwas.inez.storage.model.Sumti;
30  import io.github.magwas.inez.storage.repository.BridiReferenceRepository;
31  import io.github.magwas.kodekonveyorannotations.Delegate;
32  
33  @Component
34  @Delegate
35  public class InezImpl implements Inez {
36  	@Autowired
37  	BridiStoreChangeListenersService bridiStoreChangeListeners;
38  	@Autowired
39  	QueryProcessorService queryProcessor;
40  	@Autowired
41  	BridiStoreHistoryRepository bridiStoreHistoryRepository;
42  	@Autowired
43  	BridiReferenceRepository bridiReferenceRepository;
44  	@Autowired
45  	CreateBridiFromSumtiService createBridiFromSumti;
46  	@Autowired
47  	SaveBridiService saveBridi;
48  	@Autowired
49  	DeleteBridiService deleteBridi;
50  	@Autowired
51  	FindBridiByIdService findBridiById;
52  	@Autowired
53  	GetBridiIdBySelbriAndSumtiIdsService getBridiIdBySelbriAndSumtiIds;
54  	@Autowired
55  	FindAllIdByRepresentationService findAllIdByRepresentation;
56  	@Autowired
57  	FindAllByRepresentationService findAllByRepresentation;
58  	@Autowired
59  	BridiElementSystemInitializationService bridiElementSystemInitialization;
60  	@Autowired
61  	BridiElementFactory bridiElementFactory;
62  	@Autowired
63  	CreateBridisFromQueryService createBridisFromQuery;
64  	@Autowired
65  	CreateSumtiService createSumti;
66  
67  	private InezImpl() {
68  	}
69  
70  	public void initialize() throws IOException {
71  		bridiElementSystemInitialization.apply();
72  	}
73  
74  	public void registerListener(BridiStoreChangeListener listener) {
75  		bridiStoreChangeListeners.listeners.add(listener);
76  	}
77  
78  	public void unregisterListener(BridiStoreChangeListener listener) {
79  		bridiStoreChangeListeners.listeners.remove(listener);
80  	}
81  
82  	public Stream<Bridi> query(String query) {
83  		return queryProcessor.apply(query);
84  	}
85  
86  	public Stream<Bridi> create(String query) {
87  		return createBridisFromQuery.apply(query);
88  	}
89  
90  	public Set<Bridi> save(Collection<Bridi> values) {
91  		return saveBridi.apply(values);
92  	}
93  
94  	@Override
95  	public Stream<Bridi> findAllByRepresentation(String representation) {
96  		return findAllByRepresentation.apply(representation);
97  	}
98  
99  	@Override
100 	public Optional<Bridi> findById(String id) {
101 		return findBridiById.apply(id);
102 	}
103 
104 	@Override
105 	public Sumti createSumti(String id, String representation) {
106 		return createSumti.apply(id, representation);
107 	}
108 
109 	public BridiReferenceRepository getBridiReferenceRepository() {
110 		return bridiReferenceRepository;
111 	}
112 
113 	@Autowired
114 	CreateBridisFromDefinitionService createBridisFromDefinition;
115 
116 	@Override
117 	public Stream<Bridi> createFromdefinitions(String definitionName) {
118 		return createBridisFromDefinition.apply(definitionName);
119 	}
120 
121 	public BridiElement root() {
122 		return bridiElementFactory.apply(ElementConstants.ROOT_ID);
123 	}
124 
125 	public BridiElement byId(String id) {
126 		return bridiElementFactory.apply(id);
127 	}
128 
129 }