wip: club
This commit is contained in:
@@ -5,9 +5,13 @@ import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||
@RegisterForReflection
|
||||
public enum RoleAsso {
|
||||
MEMBRE("Membre", 0),
|
||||
PRESIDENT("Président", 3),
|
||||
TRESORIER("Trésorier", 1),
|
||||
SECRETAIRE("Secrétaire", 2);
|
||||
PRESIDENT("Président", 7),
|
||||
VPRESIDENT("Vise-Président", 6),
|
||||
SECRETAIRE("Secrétaire", 5),
|
||||
VSECRETAIRE("Vise-Secrétaire", 4),
|
||||
TRESORIER("Trésorier", 3),
|
||||
VTRESORIER("Vise-Trésorier", 2),
|
||||
MEMBREBUREAU("Membre bureau", 1);
|
||||
|
||||
public final String name;
|
||||
public final int level;
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package fr.titionfire.ffsaf.utils;
|
||||
|
||||
public class StringSimilarity {
|
||||
|
||||
public static int similarity(String s1, String s2) {
|
||||
String longer = s1, shorter = s2;
|
||||
if (s1.length() < s2.length()) {
|
||||
longer = s2;
|
||||
shorter = s1;
|
||||
}
|
||||
int longerLength = longer.length();
|
||||
if (longerLength == 0) {
|
||||
return 1;
|
||||
}
|
||||
return editDistance(longer, shorter);
|
||||
|
||||
}
|
||||
|
||||
public static int editDistance(String s1, String s2) {
|
||||
s1 = s1.toLowerCase();
|
||||
s2 = s2.toLowerCase();
|
||||
|
||||
int[] costs = new int[s2.length() + 1];
|
||||
for (int i = 0; i <= s1.length(); i++) {
|
||||
int lastValue = i;
|
||||
for (int j = 0; j <= s2.length(); j++) {
|
||||
if (i == 0)
|
||||
costs[j] = j;
|
||||
else {
|
||||
if (j > 0) {
|
||||
int newValue = costs[j - 1];
|
||||
if (s1.charAt(i - 1) != s2.charAt(j - 1))
|
||||
newValue = Math.min(Math.min(newValue, lastValue),
|
||||
costs[j]) + 1;
|
||||
costs[j - 1] = lastValue;
|
||||
lastValue = newValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i > 0)
|
||||
costs[s2.length()] = lastValue;
|
||||
}
|
||||
return costs[s2.length()];
|
||||
}
|
||||
|
||||
public static void printSimilarity(String s, String t) {
|
||||
System.out.printf(
|
||||
"%d is the similarity between \"%s\" and \"%s\"%n", similarity(s, t), s, t);
|
||||
}
|
||||
|
||||
/*public static void main(String[] args) {
|
||||
printSimilarity("Xavier Login", "Xavier Lojin");
|
||||
printSimilarity("Xavier Login", "Xavier ogin");
|
||||
printSimilarity("Xavier Login", "avier Login");
|
||||
printSimilarity("Xavier Login", "xavier login");
|
||||
printSimilarity("Xavier Login", "Xaviér Login");
|
||||
printSimilarity("Xavier Gomme Login", "Xavier Login");
|
||||
printSimilarity("Xavier Login", "Xavier Gomme Login");
|
||||
printSimilarity("Xavier Login", "Xavier");
|
||||
printSimilarity("Xavier Login", "Login");
|
||||
printSimilarity("Jule", "Julles");
|
||||
printSimilarity("Xavier", "Xaviér");
|
||||
printSimilarity("Xavier", "xavvie");
|
||||
}*/
|
||||
}
|
||||
@@ -1,8 +1,19 @@
|
||||
package fr.titionfire.ffsaf.utils;
|
||||
|
||||
import io.smallrye.mutiny.Uni;
|
||||
import jakarta.ws.rs.core.HttpHeaders;
|
||||
import jakarta.ws.rs.core.MediaType;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import jodd.net.MimeTypes;
|
||||
import net.sf.jmimemagic.Magic;
|
||||
import net.sf.jmimemagic.MagicException;
|
||||
import net.sf.jmimemagic.MagicMatchNotFoundException;
|
||||
import net.sf.jmimemagic.MagicParseException;
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URLConnection;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Calendar;
|
||||
@@ -11,6 +22,7 @@ import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class Utils {
|
||||
private static final org.jboss.logging.Logger LOGGER = Logger.getLogger(Utils.class);
|
||||
|
||||
public static int getSaison() {
|
||||
return getSaison(new Date());
|
||||
@@ -30,7 +42,12 @@ public class Utils {
|
||||
public static Future<String> replacePhoto(long id, byte[] input, String media, String dir) {
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
try (InputStream is = new BufferedInputStream(new ByteArrayInputStream(input))) {
|
||||
String mimeType = URLConnection.guessContentTypeFromStream(is);
|
||||
String mimeType;
|
||||
try {
|
||||
mimeType = Magic.getMagicMatch(input, false).getMimeType();
|
||||
} catch (MagicParseException | MagicMatchNotFoundException | MagicException e) {
|
||||
mimeType = URLConnection.guessContentTypeFromStream(is);
|
||||
}
|
||||
String[] detectedExtensions = MimeTypes.findExtensionsByMimeTypes(mimeType, false);
|
||||
if (detectedExtensions.length == 0)
|
||||
throw new IOException("Fail to detect file extension for MIME type " + mimeType);
|
||||
@@ -57,4 +74,39 @@ public class Utils {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Uni<Response> getMediaFile(long id, String media, String dirname,
|
||||
Uni<?> uniBase) throws URISyntaxException {
|
||||
Future<Pair<File, byte[]>> future = CompletableFuture.supplyAsync(() -> {
|
||||
FilenameFilter filter = (directory, filename) -> filename.startsWith(String.valueOf(id));
|
||||
File[] files = new File(media, dirname).listFiles(filter);
|
||||
if (files != null && files.length > 0) {
|
||||
File file = files[0];
|
||||
try {
|
||||
byte[] data = Files.readAllBytes(file.toPath());
|
||||
return new Pair<>(file, data);
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
URI uri = new URI("https://mdbcdn.b-cdn.net/img/Photos/new-templates/bootstrap-chat/ava2.webp");
|
||||
|
||||
return uniBase.chain(__ -> Uni.createFrom().future(future)
|
||||
.map(filePair -> {
|
||||
if (filePair == null)
|
||||
return Response.temporaryRedirect(uri).build();
|
||||
|
||||
String mimeType = URLConnection.guessContentTypeFromName(filePair.getKey().getName());
|
||||
|
||||
Response.ResponseBuilder resp = Response.ok(filePair.getValue());
|
||||
resp.type(MediaType.APPLICATION_OCTET_STREAM);
|
||||
resp.header(HttpHeaders.CONTENT_LENGTH, filePair.getValue().length);
|
||||
resp.header(HttpHeaders.CONTENT_TYPE, mimeType);
|
||||
resp.header(HttpHeaders.CONTENT_DISPOSITION, "inline; ");
|
||||
|
||||
return resp.build();
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user