Revision 41852
Added by Sandro La Bruzzo about 8 years ago
DelegatingDiffTrigger.java | ||
---|---|---|
16 | 16 |
import org.exist.storage.DBBroker; |
17 | 17 |
import org.exist.storage.txn.Txn; |
18 | 18 |
import org.exist.xmldb.XmldbURI; |
19 |
import org.w3c.dom.Document; |
|
20 | 19 |
|
21 | 20 |
/** |
22 | 21 |
* this trigger delegates diffs for CRUDE events to an non-exist dependent eu.dnetlib.xml.database.Trigger instance. |
... | ... | |
40 | 39 |
|
41 | 40 |
private Map<String, ExistsTriggerEvent> existsTriggerEventMap= new HashMap<>(); |
42 | 41 |
|
42 |
private XMLIndenter indenter = new XMLIndenter(); |
|
43 |
|
|
43 | 44 |
/** |
44 | 45 |
* {@inheritDoc} |
45 | 46 |
* |
... | ... | |
82 | 83 |
return trigger; |
83 | 84 |
} |
84 | 85 |
|
85 |
|
|
86 |
protected void triggerUpdate(final XmldbURI uri, final Document oldDoc, final Document newDoc) { |
|
87 |
final Trigger trigger = getTrigger(); |
|
88 |
if (trigger != null) |
|
89 |
trigger.updated(uri.lastSegment().toString(), uri.removeLastSegment().toString(), oldDoc, newDoc); |
|
90 |
} |
|
91 |
|
|
92 |
|
|
93 |
protected void triggerCreate(final XmldbURI uri, final Document newDoc) { |
|
94 |
final Trigger trigger = getTrigger(); |
|
95 |
if (trigger != null) |
|
96 |
trigger.created(uri.lastSegment().toString(), uri.removeLastSegment().toString(), newDoc); |
|
97 |
} |
|
98 |
|
|
99 |
|
|
100 |
protected void triggerDelete(final XmldbURI uri, final Document oldDoc) { |
|
101 |
|
|
102 |
} |
|
103 |
|
|
104 | 86 |
public String getTriggerName() { |
105 | 87 |
return triggerName; |
106 | 88 |
} |
... | ... | |
113 | 95 |
|
114 | 96 |
@Override |
115 | 97 |
public void beforeCreateDocument(final DBBroker dbBroker, final Txn txn, final XmldbURI xmldbURI) throws TriggerException { |
116 |
|
|
98 |
log.info("beforeCreateDocument called"); |
|
117 | 99 |
} |
118 | 100 |
|
119 | 101 |
@Override |
120 | 102 |
public void afterCreateDocument(final DBBroker dbBroker, final Txn txn, final DocumentImpl document) throws TriggerException { |
121 |
final Trigger trigger = getTrigger(); |
|
122 |
final String collection = document.getCollection().getURI().toString(); |
|
123 |
final String fileName = document.getFileURI().toString(); |
|
124 |
if (trigger != null) |
|
125 |
trigger.created(fileName, collection, document); |
|
103 |
log.info("afterCreateDocument called"); |
|
104 |
try { |
|
105 |
final Trigger trigger = getTrigger(); |
|
106 |
final String collection = document.getCollection().getURI().toString(); |
|
107 |
final String fileName = document.getFileURI().toString(); |
|
108 |
if (trigger != null) |
|
109 |
trigger.created(fileName, collection, indenter.parseXmlString(XMLIndenter.indent(document))); |
|
110 |
} catch (Exception e) { |
|
111 |
throw new TriggerException(e); |
|
112 |
} |
|
126 | 113 |
} |
127 | 114 |
|
128 | 115 |
@Override |
129 | 116 |
public void beforeUpdateDocument(final DBBroker dbBroker, final Txn txn, final DocumentImpl document) throws TriggerException { |
117 |
log.info("beforeUpdateDocument called"); |
|
130 | 118 |
try { |
131 | 119 |
final String collection = document.getCollection().getURI().toString(); |
132 | 120 |
final String fileName = document.getFileURI().toString(); |
133 | 121 |
final ExistsTriggerEvent event = new ExistsTriggerEvent(); |
134 |
XMLIndenter indenter = new XMLIndenter(); |
|
135 |
final Document document1 = indenter.parseXmlString(XMLIndenter.indent(document)); |
|
136 |
event.setOldDocument(document1); |
|
122 |
event.setOldDocument(indenter.parseXmlString(XMLIndenter.indent(document))); |
|
137 | 123 |
event.setEventType(EventType.UPDATE); |
138 | 124 |
event.setCollection(collection); |
139 | 125 |
event.setName(fileName); |
... | ... | |
146 | 132 |
|
147 | 133 |
@Override |
148 | 134 |
public void afterUpdateDocument(final DBBroker dbBroker, final Txn txn, final DocumentImpl document) throws TriggerException { |
135 |
log.info("afterUpdateDocument called"); |
|
136 |
try { |
|
137 |
if (!existsTriggerEventMap.containsKey(String.valueOf(txn.getId()))) { |
|
138 |
throw new TriggerException("Error on trigger missing previous operation beforeUpdateTrigger"); |
|
139 |
} |
|
140 |
final ExistsTriggerEvent existsTriggerEvent = existsTriggerEventMap.remove(String.valueOf(txn.getId())); |
|
149 | 141 |
|
150 |
if (!existsTriggerEventMap.containsKey(String.valueOf(txn.getId()))){ |
|
151 |
throw new TriggerException("Error on trigger missing previous operation beforeUpdateTrigger"); |
|
142 |
existsTriggerEvent.setDocument(indenter.parseXmlString(XMLIndenter.indent(document))); |
|
143 |
final Trigger trigger = getTrigger(); |
|
144 |
if (trigger != null) |
|
145 |
trigger.updated(existsTriggerEvent.getName(), existsTriggerEvent.getCollection(), existsTriggerEvent.getOldDocument(), |
|
146 |
existsTriggerEvent.getDocument()); |
|
147 |
} catch (IOException e) { |
|
148 |
throw new TriggerException((e)); |
|
152 | 149 |
} |
153 |
final ExistsTriggerEvent existsTriggerEvent = existsTriggerEventMap.remove(String.valueOf(txn.getId())); |
|
154 |
|
|
155 |
existsTriggerEvent.setDocument(document); |
|
156 |
final Trigger trigger = getTrigger(); |
|
157 |
if (trigger != null) |
|
158 |
trigger.updated(existsTriggerEvent.getName(), existsTriggerEvent.getCollection(), existsTriggerEvent.getOldDocument(), existsTriggerEvent.getDocument()); |
|
159 |
|
|
160 | 150 |
} |
161 | 151 |
|
162 | 152 |
@Override |
... | ... | |
191 | 181 |
|
192 | 182 |
@Override |
193 | 183 |
public void beforeDeleteDocument(final DBBroker dbBroker, final Txn txn, final DocumentImpl document) throws TriggerException { |
194 |
final Trigger trigger = getTrigger(); |
|
195 |
final String collection = document.getCollection().getURI().toString(); |
|
196 |
final String fileName = document.getFileURI().toString(); |
|
197 |
if (trigger != null) |
|
198 |
trigger.deleted(fileName, collection, document); |
|
184 |
log.info("beforeDeleteDocument called"); |
|
185 |
try { |
|
186 |
final Trigger trigger = getTrigger(); |
|
187 |
final String collection = document.getCollection().getURI().toString(); |
|
188 |
final String fileName = document.getFileURI().toString(); |
|
189 |
if (trigger != null) |
|
190 |
trigger.deleted(fileName, collection, indenter.parseXmlString(XMLIndenter.indent(document))); |
|
191 |
} catch (Exception e) { |
|
192 |
throw new TriggerException(e); |
|
193 |
} |
|
199 | 194 |
} |
200 | 195 |
|
201 | 196 |
@Override |
202 | 197 |
public void afterDeleteDocument(final DBBroker dbBroker, final Txn txn, final XmldbURI xmldbURI) throws TriggerException { |
198 |
log.info("afterDeleteDocument called"); |
|
203 | 199 |
} |
204 | 200 |
|
205 | 201 |
} |
Also available in: Unified diff
trying to resolve bug