preparing document module

This commit is contained in:
2025-07-08 22:20:00 +02:00
parent e6e3ed4052
commit a11f2f0718
12 changed files with 82 additions and 8 deletions

View File

@@ -13,6 +13,7 @@ application{
dependencies{
implementation(project(":core"))
implementation(project(":documents"))
implementation(project(":legacy"))
implementation(project(":messages"))
implementation(project(":translations"))

View File

@@ -10,6 +10,7 @@ import de.srsoftware.configuration.JsonConfig;
import de.srsoftware.tools.ColorLogger;
import de.srsoftware.umbrella.core.ConnectionProvider;
import de.srsoftware.umbrella.core.UmbrellaException;
import de.srsoftware.umbrella.documents.DocumentApi;
import de.srsoftware.umbrella.legacy.LegacyApi;
import de.srsoftware.umbrella.message.MessageApi;
import de.srsoftware.umbrella.message.MessageSystem;
@@ -59,8 +60,8 @@ public class Application {
var server = HttpServer.create(new InetSocketAddress(port), 0);
server.setExecutor(Executors.newFixedThreadPool(threads));
new LegacyApi(userDb,config).bindPath("/legacy").on(server);
new DocumentApi().bindPath("/api/document").on(server);
new MessageApi(messageSystem).bindPath("/api/messages").on(server);
translationModule.bindPath("/api/translations").on(server);
new UserModule(userDb,loginServiceDb,messageSystem).bindPath("/api/user").on(server);

View File

@@ -1,11 +1,10 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.core.model;
import de.srsoftware.umbrella.core.UmbrellaException;
import static de.srsoftware.tools.Optionals.allSet;
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
import static java.text.MessageFormat.format;
import de.srsoftware.umbrella.core.UmbrellaException;
public class EmailAddress {
private final String email;

View File

@@ -0,0 +1,5 @@
description = "Umbrella : Documents"
dependencies{
implementation(project(":core"))
}

View File

@@ -0,0 +1,8 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.documents;
public class Constants {
private Constants(){}
public static final String COMPANIES = "companies";
}

View File

@@ -0,0 +1,26 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.documents;
import static de.srsoftware.umbrella.core.ResponseCode.HTTP_NOT_IMPLEMENTED;
import static de.srsoftware.umbrella.documents.Constants.COMPANIES;
import com.sun.net.httpserver.HttpExchange;
import de.srsoftware.tools.Path;
import de.srsoftware.umbrella.core.BaseHandler;
import java.io.IOException;
public class DocumentApi extends BaseHandler {
@Override
public boolean doGet(Path path, HttpExchange ex) throws IOException {
addCors(ex);
var head = path.pop();
return switch (head){
case COMPANIES -> getCompanies(ex);
case null, default -> super.doGet(path,ex);
};
}
private boolean getCompanies(HttpExchange ex) throws IOException {
return sendEmptyResponse(HTTP_NOT_IMPLEMENTED,ex);
}
}

View File

@@ -4,6 +4,7 @@
import { user } from './user.svelte.js';
import { Router, Route } from 'svelte-tiny-router';
import Callback from "./routes/user/OidcCallback.svelte";
import DocList from "./routes/document/List.svelte";
import EditService from "./routes/user/EditService.svelte";
import EditUser from "./routes/user/EditUser.svelte";
import Footer from "./Components/Footer.svelte";
@@ -34,6 +35,8 @@
{#if user.name }
<!-- https://github.com/notnotsamuel/svelte-tiny-router -->
<Menu />
<Route path="/" component={User} />
<Route path="/document" component={DocList} />
<Route path="/message/settings" component={Messages} />
<Route path="/search" component={Search} />
<Route path="/user" component={User} />
@@ -42,7 +45,9 @@
<Route path="/user/:user_id/edit" component={EditUser} />
<Route path="/user/oidc/add" component={EditService} />
<Route path="/user/oidc/edit/:serviceName" component={EditService} />
<Route component={User} />
<Route>
Not found!
</Route>
{:else}
<Route path="/user/reset/pw" component={ResetPw} />
<Route path="/oidc_callback" component={Callback} />

View File

@@ -30,6 +30,7 @@ onMount(fetchModules);
<nav>
<a onclick={() => router.navigate('/user')}>{t('menu.users')}</a>
<a onclick={() => router.navigate('/document')}>{t('menu.documents')}</a>
<a href="https://svelte.dev/tutorial/svelte/state" target="_blank">{t('menu.tutorial')}</a>
{#each modules as module,i}
<a href={module.url}>{module.name}</a>

View File

@@ -0,0 +1,29 @@
<script>
import { onMount } from 'svelte';
import { t } from '../../translations.svelte.js';
let company = null;
let error = null;
async function loadCompanies(){
const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/document/companies`;
var resp = await fetch(url,{ credentials: 'include'});
if (resp.ok){
} else {
error = await resp.text();
}
}
onMount(loadCompanies);
</script>
<fieldset>
<legend>{t('documents.documents')}</legend>
{#if error}
<div class="error">{error}</div>
{/if}
<div>
{t('documents.select_company')}
</div>
</fieldset>

View File

@@ -25,7 +25,6 @@ import jakarta.mail.util.ByteArrayDataSource;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.BiFunction;
import java.util.function.Function;
public class MessageSystem implements PostBox {
public static final System.Logger LOG = System.getLogger(MessageSystem.class.getSimpleName());

View File

@@ -6,10 +6,8 @@ import static java.lang.System.Logger.Level.TRACE;
import static java.text.MessageFormat.format;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Function;
public class CombinedMessage {
private static final System.Logger LOG = System.getLogger(CombinedMessage.class.getSimpleName());

View File

@@ -7,3 +7,5 @@ include("messages")
include("translations")
include("user")
include("web")
include("documents")