|
|
|
|
@ -16,6 +16,8 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
@@ -16,6 +16,8 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
|
|
|
|
import de.srsoftware.umbrella.core.model.Permission; |
|
|
|
|
import de.srsoftware.umbrella.core.model.Project; |
|
|
|
|
import de.srsoftware.umbrella.core.model.Status; |
|
|
|
|
import org.json.JSONObject; |
|
|
|
|
|
|
|
|
|
import java.sql.Connection; |
|
|
|
|
import java.sql.SQLException; |
|
|
|
|
import java.util.Collection; |
|
|
|
|
@ -132,20 +134,33 @@ CREATE TABLE IF NOT EXISTS {0} (
@@ -132,20 +134,33 @@ CREATE TABLE IF NOT EXISTS {0} (
|
|
|
|
|
public Project load(long projectId) throws UmbrellaException { |
|
|
|
|
try { |
|
|
|
|
var rs = select(ALL).from(TABLE_PROJECTS).where(ID, equal(projectId)).exec(db); |
|
|
|
|
Project result = null; |
|
|
|
|
if (rs.next()) result = Project.of(rs); |
|
|
|
|
Project project = null; |
|
|
|
|
if (rs.next()) project = Project.of(rs); |
|
|
|
|
rs.close(); |
|
|
|
|
if (result == null) throw UmbrellaException.notFound("No project found for id {0}",projectId); |
|
|
|
|
|
|
|
|
|
if (project == null) throw UmbrellaException.notFound("No project found for id {0}",projectId); |
|
|
|
|
|
|
|
|
|
rs = select(ALL).from(TABLE_CUSTOM_STATES).where(PROJECT_ID,equal(projectId)).exec(db); |
|
|
|
|
var states = result.allowedStates(); |
|
|
|
|
var states = project.allowedStates(); |
|
|
|
|
while (rs.next()) states.add(Status.of(rs)); |
|
|
|
|
rs.close(); |
|
|
|
|
return result; |
|
|
|
|
|
|
|
|
|
rs = select(VALUE).from(TABLE_SETTINGS).where(KEY,equal(colorKey(projectId))).exec(db); |
|
|
|
|
if (rs.next()) { |
|
|
|
|
var map = project.tagColors(); |
|
|
|
|
new JSONObject(rs.getString(VALUE)).toMap().forEach((k, v) -> map.put(k, v.toString())); |
|
|
|
|
} |
|
|
|
|
rs.close(); |
|
|
|
|
return project; |
|
|
|
|
} catch (SQLException e) { |
|
|
|
|
throw new UmbrellaException("Failed to load project from database"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String colorKey(long projectId) { |
|
|
|
|
return "tag_colors:"+projectId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<Long, Project> ofCompany(long companyId, boolean includeClosed) throws UmbrellaException { |
|
|
|
|
try { |
|
|
|
|
|