Skip to content

Commit 4c9cb9f

Browse files
committed
Implemented the new migration tool
1 parent f9b9f57 commit 4c9cb9f

13 files changed

Lines changed: 394 additions & 110 deletions

File tree

‎pom.xml‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
<version>5.1.6</version>
2929
<scope>test</scope>
3030
</dependency>
31+
<dependency>
32+
<groupId>org.reflections</groupId>
33+
<artifactId>reflections</artifactId>
34+
<version>0.9.12</version>
35+
</dependency>
3136
</dependencies>
3237

3338
</project>

‎src/main/java/org/javawebstack/orm/ORM.java‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,6 @@ public static <T extends Model> Repo<T> register(Class<T> model, SQL sql) throws
2626
return register(model, sql, new ORMConfig());
2727
}
2828

29-
public static <T extends Model> Repo<T> registerAndMigrate(Class<T> model, SQL sql, ORMConfig config) throws ORMConfigurationException {
30-
Repo<T> repo = new Repo<>(model, sql, config);
31-
repo.migrate();
32-
repositories.put(model, repo);
33-
return repo;
34-
}
35-
36-
public static <T extends Model> Repo<T> registerAndMigrate(Class<T> model, SQL sql) throws ORMConfigurationException {
37-
return registerAndMigrate(model, sql, new ORMConfig());
38-
}
39-
4029
public static void unregister(Class<? extends Model> model){
4130
repositories.remove(model);
4231
}

‎src/main/java/org/javawebstack/orm/QueryBuilder.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ private Object getValue(ResultSet rs, Class<?> sqlType, String columnName) {
323323
return rs.getLong(columnName);
324324
if(sqlType.equals(Double.class))
325325
return rs.getDouble(columnName);
326+
if(sqlType.equals(Float.class))
327+
return rs.getFloat(columnName);
326328
if(sqlType.equals(Timestamp.class))
327329
return rs.getTimestamp(columnName);
328330
} catch (SQLException e) {

‎src/main/java/org/javawebstack/orm/Repo.java‎

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.javawebstack.orm;
22

33
import org.javawebstack.orm.exception.ORMConfigurationException;
4-
import org.javawebstack.orm.util.MigrationTool;
4+
import org.javawebstack.orm.migration.DB;
55
import org.javawebstack.orm.wrapper.SQL;
66

77
import java.sql.Timestamp;
@@ -16,8 +16,8 @@ public static <T extends Model> Repo<T> get(Class<T> model){
1616
}
1717

1818
private final TableInfo info;
19-
private SQL connection;
20-
private List<Observer<T>> observers = new ArrayList<>();
19+
private final SQL connection;
20+
private final List<Observer<T>> observers = new ArrayList<>();
2121

2222
public Repo(Class<T> clazz, SQL connection, ORMConfig config) throws ORMConfigurationException {
2323
this.info = new TableInfo(clazz, config);
@@ -133,11 +133,6 @@ public Repo<T> observe(Observer<T> observer){
133133
return this;
134134
}
135135

136-
public Repo<T> migrate(){
137-
MigrationTool.migrate(connection, info);
138-
return this;
139-
}
140-
141136
public SQL getConnection(){
142137
return connection;
143138
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.javawebstack.orm;
2+
3+
public enum SQLType {
4+
5+
VARCHAR,
6+
BIGINT,
7+
INT,
8+
TINYINT,
9+
DOUBLE,
10+
FLOAT,
11+
TEXT,
12+
TIMESTAMP,
13+
ENUM
14+
15+
}

‎src/main/java/org/javawebstack/orm/TableInfo.java‎

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import org.javawebstack.orm.annotation.SoftDelete;
66
import org.javawebstack.orm.annotation.Table;
77
import org.javawebstack.orm.exception.ORMConfigurationException;
8-
import org.javawebstack.orm.mapper.DefaultMapper;
98
import org.javawebstack.orm.mapper.TypeMapper;
109
import org.javawebstack.orm.util.Helper;
1110
import org.javawebstack.orm.util.KeyType;
@@ -67,7 +66,7 @@ public TableInfo(Class<? extends Model> model, ORMConfig config) throws ORMConfi
6766
fields.put(fieldName, field);
6867
fieldConfigs.put(fieldName, fieldConfig);
6968
for(TypeMapper mapper : config.getTypeMappers()){
70-
Class<?> type = mapper.getTargetType(field.getType());
69+
Class<?> type = mapper.getInternalType(field.getType());
7170
if(type != null) {
7271
sqlTypes.put(fieldName, type);
7372
break;
@@ -160,22 +159,6 @@ public String getTableName(){
160159
return config.getTablePrefix()+tableName;
161160
}
162161

163-
public int getSQLSize(String fieldName){
164-
int size = fieldConfigs.get(fieldName).size();
165-
if(size == -1)
166-
size = config.getDefaultSize();
167-
return size;
168-
}
169-
170-
public String getSQLType(String fieldName){
171-
for(TypeMapper mapper : config.getTypeMappers()){
172-
String type = mapper.getSQLType(getField(fieldName).getType(), getSQLSize(fieldName));
173-
if(type != null)
174-
return type;
175-
}
176-
return new DefaultMapper().getSQLType(String.class, 0);
177-
}
178-
179162
public Class<? extends Model> getModelClass(){
180163
return modelClass;
181164
}

‎src/main/java/org/javawebstack/orm/mapper/DefaultMapper.java‎

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.javawebstack.orm.mapper;
22

3+
import org.javawebstack.orm.SQLType;
4+
35
import java.sql.Timestamp;
46
import java.util.ArrayList;
57
import java.util.Date;
@@ -54,7 +56,7 @@ public Object mapToJava(Object source, Class<?> type) {
5456
return source;
5557
}
5658

57-
public Class<?> getTargetType(Class<?> type){
59+
public Class<?> getInternalType(Class<?> type){
5860
if(type.equals(String.class))
5961
return String.class;
6062
if(type.equals(UUID.class))
@@ -76,34 +78,4 @@ public Class<?> getTargetType(Class<?> type){
7678
return null;
7779
}
7880

79-
public String getSQLType(Class<?> type, int size){
80-
if(type.equals(String.class))
81-
return size>0?"VARCHAR("+size+")":"TEXT";
82-
if(type.equals(Integer.class) || type.equals(int.class))
83-
return "INT";
84-
if(type.equals(Long.class) || type.equals(long.class))
85-
return "BIGINT";
86-
if(type.equals(Double.class) || type.equals(double.class))
87-
return "DOUBLE";
88-
if(type.equals(Float.class) || type.equals(float.class))
89-
return "FLOAT";
90-
if(type.equals(Timestamp.class))
91-
return "TIMESTAMP";
92-
if(type.equals(Date.class))
93-
return getSQLType(Timestamp.class, size);
94-
if(type.equals(Boolean.class) || type.equals(boolean.class))
95-
return "TINYINT";
96-
if(type.equals(UUID.class))
97-
return getSQLType(String.class, 36);
98-
if(type.isEnum()){
99-
List<String> values = new ArrayList<>();
100-
for(Object v : type.getEnumConstants()){
101-
Enum<?> vObject = (Enum<?>) v;
102-
values.add("'"+vObject.name()+"'");
103-
}
104-
return "ENUM("+String.join(",", values)+")";
105-
}
106-
return null;
107-
}
108-
10981
}

‎src/main/java/org/javawebstack/orm/mapper/TypeMapper.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ public interface TypeMapper {
44

55
Object mapToSQL(Object source, Class<?> type);
66
Object mapToJava(Object source, Class<?> type);
7-
Class<?> getTargetType(Class<?> type);
8-
String getSQLType(Class<?> type, int size);
7+
Class<?> getInternalType(Class<?> type);
98

109
}

0 commit comments

Comments
 (0)