implemented user login.
next: find a solution for routing
This commit is contained in:
20
core/build.gradle.kts
Normal file
20
core/build.gradle.kts
Normal file
@@ -0,0 +1,20 @@
|
||||
plugins {
|
||||
id("java")
|
||||
}
|
||||
|
||||
group = "de.srsoftware"
|
||||
version = "unspecified"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testImplementation(platform("org.junit:junit-bom:5.10.0"))
|
||||
testImplementation("org.junit.jupiter:junit-jupiter")
|
||||
implementation("org.xerial:sqlite-jdbc:3.49.0.0")
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class AddableMap extends HashMap<String,Object> {
|
||||
public AddableMap plus(Object...param){
|
||||
if (param.length % 2 == 1) throw new RuntimeException("Expectirg number of parameters to be even");
|
||||
for (int i=0; i<param.length; i+=2) put(param[i].toString(),param[i+1]);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import org.sqlite.SQLiteDataSource;
|
||||
|
||||
public class ConnectionProvider extends HashMap<File, Connection> {
|
||||
public Connection get(Object o) {
|
||||
if (o instanceof String filename) o = new File(filename);
|
||||
if (o instanceof File dbFile) try {
|
||||
var conn = super.get(dbFile);
|
||||
if (conn == null) put(dbFile, conn = open(dbFile));
|
||||
return conn;
|
||||
} catch (SQLException sqle) {
|
||||
throw new RuntimeException(sqle);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Connection open(File dbFile) throws SQLException {
|
||||
SQLiteDataSource dataSource = new SQLiteDataSource();
|
||||
dataSource.setUrl("jdbc:sqlite:%s".formatted(dbFile));
|
||||
return dataSource.getConnection();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core;
|
||||
|
||||
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
public class Constants {
|
||||
|
||||
public static final String ADDRESS = "address";
|
||||
public static final String ATTACHMENTS = "attachments";
|
||||
public static final String BODY = "body";
|
||||
public static final String DATA = "data";
|
||||
public static final String DATE = "date";
|
||||
public static final String DEFAULT_LANGUAGE = "en";
|
||||
public static final String DEFAULT_THEME = "winter";
|
||||
public static final String DESCRIPTION = "description";
|
||||
public static final String DOMAIN = "domain";
|
||||
public static final String EMAIL = "email";
|
||||
|
||||
public static final String ERROR_FAILED_CREATE_TABLE = "Failed to create \"{0}\" table!";
|
||||
public static final String ERROR_INVALID_FIELD = "Expected {0} to be {1}!";
|
||||
public static final String ERROR_MISSING_FIELD = "Json is missing {0} field!";
|
||||
public static final String ERROR_READ_TABLE = "Failed to read {0} from {1} table";
|
||||
|
||||
public static final String EXPIRATION = "expiration";
|
||||
public static final String ID = "id";
|
||||
public static final String KEY = "key";
|
||||
public static final String LANGUAGE = "language";
|
||||
public static final String LOGIN = "login";
|
||||
public static final String MESSAGES = "messages";
|
||||
public static final String NAME = "name";
|
||||
public static final String MIME = "mime";
|
||||
public static final String NUMBER = "number";
|
||||
public static final String OPTIONAL = "optional";
|
||||
public static final String PASSWORD = "password";
|
||||
|
||||
public static final String RECEIVERS = "receivers";
|
||||
public static final String REDIRECT = "redirect";
|
||||
public static final String SENDER = "sender";
|
||||
public static final String SETTINGS = "settings";
|
||||
public static final String STATE = "state";
|
||||
public static final String STATUS_CODE = "code";
|
||||
public static final String STRING = "string";
|
||||
public static final String SUBJECT = "subject";
|
||||
|
||||
public static final String TABLE_SETTINGS = "settings";
|
||||
|
||||
public static final String TEMPLATE = "template";
|
||||
public static final String TEXT = "text";
|
||||
public static final String THEME = "theme";
|
||||
public static final String TITLE = "title";
|
||||
public static final String TOKEN = "token";
|
||||
public static final String UMBRELLA = "Umbrella";
|
||||
public static final String URL = "url";
|
||||
public static final String USER = "user";
|
||||
public static final String USER_ID = "user_id";
|
||||
public static final String USER_LIST = "user_list";
|
||||
public static final String UTF8 = UTF_8.displayName();
|
||||
public static final String VALUE = "value";
|
||||
}
|
||||
19
core/src/main/java/de/srsoftware/umbrella/core/Paths.java
Normal file
19
core/src/main/java/de/srsoftware/umbrella/core/Paths.java
Normal file
@@ -0,0 +1,19 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core;
|
||||
|
||||
public class Paths {
|
||||
private Paths(){};
|
||||
|
||||
public static final String ADD = "add";
|
||||
public static final String CSS = "css";
|
||||
public static final String JSON = "json";
|
||||
public static final String LEGACY = "legacy";
|
||||
public static final String LIST = "list";
|
||||
public static final String LOGOUT = "logout";
|
||||
public static final String SEARCH = "search";
|
||||
public static final String SERVICE = "service";
|
||||
public static final String SETTINGS = "settings";
|
||||
public static final String SUBMIT = "submit";
|
||||
public static final String TOKEN = "token";
|
||||
public static final String VIEW = "view";
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core;
|
||||
|
||||
public class ResponseCode {
|
||||
public static final int OK = 200;
|
||||
public static final int REDIRECT = 302;
|
||||
public static final int BAD_REQUEST = 400;
|
||||
public static final int UNAUTHORIZED = 401;
|
||||
public static final int FORBIDDEN = 403;
|
||||
public static final int NOT_FOUND = 404;
|
||||
public static final int UNPROCESSABLE = 422;
|
||||
public static final int SERVER_ERROR = 500;
|
||||
public static final int NOT_IMPLEMENTED = 501;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core;
|
||||
|
||||
import static java.text.MessageFormat.format;
|
||||
|
||||
|
||||
public class UmbrellaException extends Exception{
|
||||
private final int statusCode;
|
||||
|
||||
public UmbrellaException(int statusCode, String message){
|
||||
super(message);
|
||||
this.statusCode = statusCode;
|
||||
}
|
||||
|
||||
public UmbrellaException(int statusCode, String message, Object ... fills){
|
||||
this(statusCode,format(message,fills));
|
||||
}
|
||||
|
||||
public UmbrellaException causedBy(Exception e) {
|
||||
initCause(e);
|
||||
return this;
|
||||
}
|
||||
|
||||
public int statusCode(){
|
||||
return statusCode;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user