|
|
|
@ -25,7 +25,6 @@ import java.util.*; |
|
|
|
|
|
|
|
|
|
|
|
public class SqliteDb extends BaseDb implements TaskDb { |
|
|
|
public class SqliteDb extends BaseDb implements TaskDb { |
|
|
|
private static final System.Logger LOG = System.getLogger("TaskDb"); |
|
|
|
private static final System.Logger LOG = System.getLogger("TaskDb"); |
|
|
|
private static final int INITIAL_DB_VERSION = 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public SqliteDb(Connection connection) { |
|
|
|
public SqliteDb(Connection connection) { |
|
|
|
super(connection); |
|
|
|
super(connection); |
|
|
|
@ -41,9 +40,11 @@ public class SqliteDb extends BaseDb implements TaskDb { |
|
|
|
swapStates(TABLE_TASKS); |
|
|
|
swapStates(TABLE_TASKS); |
|
|
|
case 2: |
|
|
|
case 2: |
|
|
|
createDependencyTable(); |
|
|
|
createDependencyTable(); |
|
|
|
|
|
|
|
case 3: |
|
|
|
|
|
|
|
createPriorityColumn(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return setCurrentVersion(3); |
|
|
|
return setCurrentVersion(4); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void createDependencyTable() { |
|
|
|
private void createDependencyTable() { |
|
|
|
@ -59,6 +60,15 @@ public class SqliteDb extends BaseDb implements TaskDb { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void createPriorityColumn() { |
|
|
|
|
|
|
|
var sql = format("ALTER TABLE {0} ADD {1} INT NOT NULL DEFAULT 0",TABLE_TASKS,PRIORITY); |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
db.prepareStatement(sql).execute(); |
|
|
|
|
|
|
|
} catch (SQLException e) { |
|
|
|
|
|
|
|
throw databaseException("Failed to add {0} column to {1}",PRIORITY,TABLE_TASKS); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void createTaskTable() { |
|
|
|
private void createTaskTable() { |
|
|
|
var createTable = """ |
|
|
|
var createTable = """ |
|
|
|
CREATE TABLE IF NOT EXISTS "{0}" ( |
|
|
|
CREATE TABLE IF NOT EXISTS "{0}" ( |
|
|
|
@ -299,15 +309,15 @@ CREATE TABLE IF NOT EXISTS {0} ( |
|
|
|
public Task save(Task task) { |
|
|
|
public Task save(Task task) { |
|
|
|
try { |
|
|
|
try { |
|
|
|
if (task.id() == 0){ // new task
|
|
|
|
if (task.id() == 0){ // new task
|
|
|
|
var rs = insertInto(TABLE_TASKS,PROJECT_ID,PARENT_TASK_ID,NAME,DESCRIPTION,STATUS,EST_TIME,START_DATE,DUE_DATE,SHOW_CLOSED,NO_INDEX) |
|
|
|
var rs = insertInto(TABLE_TASKS,PROJECT_ID,PARENT_TASK_ID,NAME,DESCRIPTION,STATUS,EST_TIME,START_DATE,DUE_DATE,SHOW_CLOSED,NO_INDEX,PRIORITY) |
|
|
|
.values(task.projectId(),task.parentTaskId(),task.name(),task.description(),task.status(),task.estimatedTime(),task.start(),task.dueDate(),task.showClosed(),task.noIndex()) |
|
|
|
.values(task.projectId(),task.parentTaskId(),task.name(),task.description(),task.status(),task.estimatedTime(),task.start(),task.dueDate(),task.showClosed(),task.noIndex(),task.priority()) |
|
|
|
.execute(db) |
|
|
|
.execute(db) |
|
|
|
.getGeneratedKeys(); |
|
|
|
.getGeneratedKeys(); |
|
|
|
Long taskId = null; |
|
|
|
Long taskId = null; |
|
|
|
if (rs.next()) taskId=rs.getLong(1); |
|
|
|
if (rs.next()) taskId=rs.getLong(1); |
|
|
|
rs.close(); |
|
|
|
rs.close(); |
|
|
|
if (taskId == null) throw new UmbrellaException("Failed to save task {0}",task.name()); |
|
|
|
if (taskId == null) throw new UmbrellaException("Failed to save task {0}",task.name()); |
|
|
|
return new Task(taskId,task.projectId(),task.parentTaskId(),task.name(),task.description(),task.status(),task.estimatedTime(),task.start(),task.dueDate(),task.showClosed(),task.noIndex(),task.members()); |
|
|
|
return new Task(taskId,task.projectId(),task.parentTaskId(),task.name(),task.description(),task.status(),task.estimatedTime(),task.start(),task.dueDate(),task.showClosed(),task.noIndex(),task.members(), task.priority()); |
|
|
|
} |
|
|
|
} |
|
|
|
if (task.isDirty(MEMBERS)){ |
|
|
|
if (task.isDirty(MEMBERS)){ |
|
|
|
var query = replaceInto(TABLE_TASKS_USERS,TASK_ID,USER_ID,PERMISSIONS); |
|
|
|
var query = replaceInto(TABLE_TASKS_USERS,TASK_ID,USER_ID,PERMISSIONS); |
|
|
|
@ -332,9 +342,9 @@ CREATE TABLE IF NOT EXISTS {0} ( |
|
|
|
task.clean(REQUIRED_TASKS_IDS); |
|
|
|
task.clean(REQUIRED_TASKS_IDS); |
|
|
|
} |
|
|
|
} |
|
|
|
if (task.isDirty()) { |
|
|
|
if (task.isDirty()) { |
|
|
|
update(TABLE_TASKS).set(PROJECT_ID,PARENT_TASK_ID,NAME,DESCRIPTION,STATUS,EST_TIME,START_DATE,DUE_DATE,SHOW_CLOSED,NO_INDEX) |
|
|
|
update(TABLE_TASKS).set(PROJECT_ID,PARENT_TASK_ID,NAME,DESCRIPTION,STATUS,EST_TIME,START_DATE,DUE_DATE,SHOW_CLOSED,NO_INDEX,PRIORITY) |
|
|
|
.where(ID,equal(task.id())).prepare(db) |
|
|
|
.where(ID,equal(task.id())).prepare(db) |
|
|
|
.apply(task.projectId(),task.parentTaskId(),task.name(),task.description(),task.status(),task.estimatedTime(),task.start(),task.dueDate(),task.showClosed(),task.noIndex()) |
|
|
|
.apply(task.projectId(),task.parentTaskId(),task.name(),task.description(),task.status(),task.estimatedTime(),task.start(),task.dueDate(),task.showClosed(),task.noIndex(),task.priority()) |
|
|
|
.close(); |
|
|
|
.close(); |
|
|
|
task.clean(); |
|
|
|
task.clean(); |
|
|
|
} |
|
|
|
} |
|
|
|
|