var ElementFactory = require("../elementfactory"),
    ActionHandlerFactory = require("./actionhandlers/actionhandlerfactory"),
    TransactionCommitter = require("./transactioncommitter");


module.exports = (function () {
    function Transaction(options, typeMap) {
        this.committer = new TransactionCommitter(this);
        this.options = options;
        this.typeMap = typeMap;
        this.txArray = [];
        this.pendingVertices = [];
    }

    Transaction.prototype.commit = function() {
        return this.committer.doCommit();
    };

    /**
     * Handle an action for an element of given type.
     *
     * @param {String} action
     * @param {String} type
     * @param {Array} args
     */
    Transaction.prototype.handleAction = function(action, type, args) {
        var element = ElementFactory.build(type);
        var actionhandler = ActionHandlerFactory.build(element, this, args);
        return actionhandler.handleAction(action);
    };

    Transaction.prototype.addVertex = function() {
        return this.handleAction('create', 'vertex', arguments);
    };

    Transaction.prototype.addEdge = function() {
        return this.handleAction('create', 'edge', arguments);
    };

    Transaction.prototype.removeVertex = function() {
        return this.handleAction('delete', 'vertex', arguments);
    };

    Transaction.prototype.removeEdge = function() {
        return this.handleAction('delete', 'edge', arguments);
    };

    Transaction.prototype.updateVertex = function() {
        return this.handleAction('update', 'vertex', arguments);
    };

    Transaction.prototype.updateEdge = function() {
        return this.handleAction('update', 'edge', arguments);
    };

    return Transaction;
})();

@@ -44,18 +44,16 @@
 tory%22),%0A
-  
   Action
@@ -119,18 +119,16 @@
 tory%22),%0A
-  
   Transa
@@ -213,18 +213,16 @@
 on () %7B%0A
-  
   functi
@@ -256,28 +256,24 @@
 eMap) %7B%0A    
-  
-  
 this.committ
@@ -305,28 +305,24 @@
 tter(this);%0A
-    
     this.opt
@@ -337,28 +337,24 @@
 ptions;%0A    
- 
-   
 this.typeMap
@@ -365,20 +365,16 @@
 ypeMap;%0A
-    
     this
@@ -388,20 +388,16 @@
 y = %5B%5D;%0A
-    
     this
@@ -423,19 +423,15 @@
 %5B%5D;%0A
-  
   %7D%0A%0A  
- 
- 
 Tran
@@ -462,36 +462,32 @@
  = function() %7B%0A
-    
     return this.
@@ -508,26 +508,24 @@
 mmit();%0A
-  
   %7D;%0A%0A  
   /**%0A  
@@ -520,16 +520,12 @@
 %0A%0A  
- 
- 
 /**%0A
-  
    *
@@ -579,14 +579,10 @@
 %0A   
-  *%0A  
+*%0A
    *
@@ -604,26 +604,24 @@
 %7D action%0A   
-  
 * @param %7BSt
@@ -631,18 +631,16 @@
 g%7D type%0A
-  
    * @pa
@@ -663,17 +663,13 @@
 %0A   
-  
 */%0A  
- 
- 
 Tran
@@ -728,28 +728,24 @@
 pe, args) %7B%0A
-    
     var elem
@@ -782,20 +782,16 @@
 e);%0A    
-  
-  
 var acti
@@ -851,20 +851,16 @@
  args);%0A
-    
     retu
@@ -898,26 +898,22 @@
 ction);%0A
-  
   %7D;%0A%0A
-  
   Transa
@@ -945,36 +945,32 @@
  = function() %7B%0A
-    
     return this.
@@ -1012,32 +1012,28 @@
 guments);%0A  
- 
- 
 %7D;%0A%0A
-  
   Transactio
@@ -1059,36 +1059,32 @@
  = function() %7B%0A
-    
     return this.
@@ -1122,34 +1122,30 @@
 arguments);%0A
-  
   %7D;%0A%0A
-  
   Transactio
@@ -1180,36 +1180,32 @@
 unction() %7B%0A    
-   
- 
 return this.hand
@@ -1241,34 +1241,32 @@
 arguments);%0A
-  
   %7D;%0A%0A  
   Transactio
@@ -1245,34 +1245,32 @@
 ments);%0A  %7D;%0A%0A  
- 
- 
 Transaction.prot
@@ -1297,36 +1297,32 @@
 unction() %7B%0A    
-   
- 
 return this.hand
@@ -1356,34 +1356,32 @@
 arguments);%0A
-  
   %7D;%0A%0A  
   Transactio
@@ -1360,34 +1360,32 @@
 ments);%0A  %7D;%0A%0A  
- 
- 
 Transaction.prot
@@ -1414,36 +1414,32 @@
 unction() %7B%0A    
-  
-  
 return this.hand
@@ -1479,26 +1479,22 @@
 ments);%0A
-  
   %7D;%0A%0A
-  
   Transa
@@ -1539,20 +1539,16 @@
 ) %7B%0A    
- 
-   
 return t
@@ -1598,18 +1598,14 @@
 s);%0A
-  
   %7D;%0A%0A
-  
   re

Switch Transaction to 2 spaces tabs. Sorry git blame.