Update license date and text
[aai/champ.git] / champ-lib / champ-core / src / main / java / org / onap / aai / champcore / ChampTransaction.java
1 /**
2  * ============LICENSE_START==========================================
3  * org.onap.aai
4  * ===================================================================
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017-2018 Amdocs
7  * ===================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  */
21 package org.onap.aai.champcore;
22
23 import java.util.ArrayList;
24 import java.util.Collections;
25 import java.util.List;
26 import java.util.UUID;
27
28 import org.onap.aai.champcore.event.ChampEvent;
29 import org.onap.aai.champcore.exceptions.ChampTransactionException;
30
31 /**
32  * This class defines the interface for a graph transaction object.
33  */
34 public abstract class ChampTransaction {
35
36   /** Unique identifier for this transaction (largely for logging purposes). */
37   protected UUID  id;
38   
39   protected List<ChampEvent> eventList = Collections.synchronizedList(new ArrayList<ChampEvent>());
40   
41   public ChampTransaction() {
42     
43     // Create a unique identifier for this transaction.
44     id = UUID.randomUUID();
45   }
46   
47   public String id() {
48     return id.toString();
49   }
50   
51   public void logEvent(ChampEvent event) {
52     eventList.add(event);
53   }
54   
55   public List<ChampEvent> getEnqueuedEvents() {
56     return eventList;
57   }
58   
59   /**
60    * Finalize all updates to the graph which have been made within the context
61    * of this transaction.
62    */
63   public abstract void commit() throws ChampTransactionException ;
64   
65   
66   /**
67    * Aborts all graph changes made within the context of this transaction, backing
68    * out all changes as if they had never happened.
69    */
70   public abstract void rollback() throws ChampTransactionException ;
71   
72 }