package net.davidvoid.thor.lightning.entity;

import static org.springframework.util.Assert.isTrue;
import static org.springframework.util.Assert.notNull;

public abstract class Entity {
    Long id = null;

    /**
     * Every entity saved to DB will have a unique ID assigned, so if 
     * the entity has a valid id, then we can assumes this entity has already
     * been saved to DB.
     */
    public boolean has_valid_id() {
        return id != null;
    }

    public Object getId() {
        isTrue(has_valid_id());
        
        return id;
    }
    
    public void setId(long id) {
        this.id = (Long) id;
    }

    public void setId(Object id) {
        notNull(id);
        
        if (id instanceof Long) {
            this.id = (Long) id;
        } else if (id instanceof Integer) {
            this.id = ((Integer)id).longValue();
        }

        throw new IllegalArgumentException("id should only be Long or Integer");
    }

    public void setInvalidId() {
        id = null;
    }
    
    public static boolean is_valid_id(Object id) {
        return id != null && ((id instanceof Integer) || (id instanceof Long));
    }
}

@@ -37,19 +37,17 @@
 .entity;
-%0D%0A%0D
+%0A
 %0Aimport 
@@ -92,17 +92,16 @@
 .isTrue;
-%0D
 %0Aimport 
@@ -147,19 +147,17 @@
 notNull;
-%0D%0A%0D
+%0A
 %0Apublic 
@@ -179,17 +179,16 @@
 Entity %7B
-%0D
 %0A    Lon
@@ -203,19 +203,17 @@
 ull;
-%0D%0A%0D
+%0A
 %0A    /**
 %0D%0A  
@@ -208,17 +208,16 @@
 %0A    /**
-%0D
 %0A     * 
@@ -279,17 +279,16 @@
 , so if 
-%0D
 %0A     * 
@@ -357,17 +357,16 @@
  already
-%0D
 %0A     * 
@@ -386,17 +386,16 @@
  DB.
-%0D
 %0A     */
 %0D%0A  
@@ -390,17 +390,16 @@
 %0A     */
-%0D
 %0A    pub
@@ -422,25 +422,24 @@
 valid_id() %7B
-%0D
 %0A        ret
@@ -453,26 +453,23 @@
 != null;
-%0D
 %0A    %7D
-%0D%0A%0D
+%0A
 %0A    pub
@@ -484,25 +484,24 @@
 ct getId() %7B
-%0D
 %0A        isT
@@ -520,17 +520,16 @@
 d_id());
-%0D
 %0A       
@@ -521,33 +521,32 @@
 _id());%0A        
-%0D
 %0A        return 
@@ -548,30 +548,27 @@
 turn id;
-%0D
 %0A    %7D
-%0D
 %0A    
-%0D
 %0A    pub
@@ -588,25 +588,24 @@
 d(long id) %7B
-%0D
 %0A        thi
@@ -621,26 +621,23 @@
 ong) id;
-%0D
 %0A    %7D
-%0D%0A%0D
+%0A
 %0A    pub
@@ -655,33 +655,32 @@
 tId(Object id) %7B
-%0D
 %0A        notNull
@@ -684,17 +684,16 @@
 ull(id);
-%0D
 %0A       
@@ -689,25 +689,24 @@
 d);%0A        
-%0D
 %0A        if 
@@ -727,17 +727,16 @@
  Long) %7B
-%0D
 %0A       
@@ -760,17 +760,16 @@
 ong) id;
-%0D
 %0A       
@@ -804,17 +804,16 @@
 teger) %7B
-%0D
 %0A       
@@ -853,17 +853,16 @@
 Value();
-%0D
 %0A       
@@ -859,28 +859,36 @@
 );%0A        %7D
-%0D%0A%0D%0A
+ else %7B%0A    
         thro
@@ -959,18 +959,25 @@
 r%22);
-%0D%0A    %7D%0D%0A%0D
+%0A        %7D%0A    %7D%0A
 %0A   
@@ -1005,17 +1005,16 @@
 idId() %7B
-%0D
 %0A       
@@ -1028,22 +1028,19 @@
 ull;
-%0D
 %0A    %7D
-%0D
 %0A    
-%0D
 %0A   
@@ -1086,17 +1086,16 @@
 ct id) %7B
-%0D
 %0A       
@@ -1170,16 +1170,13 @@
 g));
-%0D
 %0A    %7D
-%0D
 %0A%7D
-%0D
 %0A

change line end