feat: Add FaceAI handoff URL builder and enhance race storage metadata handling
All checks were successful
Publish FaceAI Container / publish (push) Successful in 9m53s
All checks were successful
Publish FaceAI Container / publish (push) Successful in 9m53s
This commit is contained in:
parent
bba8026b7c
commit
4f003bb5a9
5 changed files with 214 additions and 37 deletions
|
|
@ -148,6 +148,14 @@ private boolean faceAiLookupHasResolvedPhoto(Object foto) {
|
|||
&& faceAiLookupLong(faceAiLookupInvoke(foto, "getId_foto", null, null)) > 0L;
|
||||
}
|
||||
|
||||
private boolean faceAiLookupMatchesRace(Object foto, long raceId) {
|
||||
if (raceId <= 0L) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return faceAiLookupLong(faceAiLookupInvoke(foto, "getId_gara", null, null)) == raceId;
|
||||
}
|
||||
|
||||
private Object faceAiLookupResolvePhoto(Class fotoClass, Constructor constructor, Object apFull, String photoId, String normalizedPhotoId, String fileName, long raceId, long[] puntoFotoIds) throws Exception {
|
||||
Method findByPrimaryKey = fotoClass.getMethod("findByPrimaryKey", new Class[] { long.class });
|
||||
Method findByFoto = fotoClass.getMethod("findByFoto", new Class[] { String.class });
|
||||
|
|
@ -158,7 +166,7 @@ private Object faceAiLookupResolvePhoto(Class fotoClass, Constructor constructor
|
|||
if (photoId.matches("^\\d+$")) {
|
||||
Object foto = faceAiLookupInstantiateFoto(fotoClass, constructor, apFull);
|
||||
findByPrimaryKey.invoke(foto, new Object[] { Long.valueOf(Long.parseLong(photoId)) });
|
||||
if (faceAiLookupHasResolvedPhoto(foto)) {
|
||||
if (faceAiLookupHasResolvedPhoto(foto) && faceAiLookupMatchesRace(foto, raceId)) {
|
||||
return foto;
|
||||
}
|
||||
}
|
||||
|
|
@ -166,8 +174,7 @@ private Object faceAiLookupResolvePhoto(Class fotoClass, Constructor constructor
|
|||
String[] fotoCandidates = new String[] {
|
||||
photoId,
|
||||
normalizedPhotoId,
|
||||
compositeFileName,
|
||||
fileName
|
||||
compositeFileName
|
||||
};
|
||||
for (int index = 0; index < fotoCandidates.length; index++) {
|
||||
String candidate = faceAiLookupTrim(fotoCandidates[index]);
|
||||
|
|
@ -177,7 +184,7 @@ private Object faceAiLookupResolvePhoto(Class fotoClass, Constructor constructor
|
|||
|
||||
Object foto = faceAiLookupInstantiateFoto(fotoClass, constructor, apFull);
|
||||
findByFoto.invoke(foto, new Object[] { candidate });
|
||||
if (faceAiLookupHasResolvedPhoto(foto)) {
|
||||
if (faceAiLookupHasResolvedPhoto(foto) && faceAiLookupMatchesRace(foto, raceId)) {
|
||||
return foto;
|
||||
}
|
||||
}
|
||||
|
|
@ -212,6 +219,14 @@ private Object faceAiLookupResolvePhoto(Class fotoClass, Constructor constructor
|
|||
}
|
||||
}
|
||||
|
||||
if (fileName.length() > 0 && raceId <= 0L && faceAiLookupIsSafeValue(fileName)) {
|
||||
Object foto = faceAiLookupInstantiateFoto(fotoClass, constructor, apFull);
|
||||
findByFoto.invoke(foto, new Object[] { fileName });
|
||||
if (faceAiLookupHasResolvedPhoto(foto)) {
|
||||
return foto;
|
||||
}
|
||||
}
|
||||
|
||||
return faceAiLookupInstantiateFoto(fotoClass, constructor, apFull);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,31 +66,59 @@ String faceAiRaceYear = "";
|
|||
String faceAiRaceMonthFolder = "";
|
||||
String faceAiRaceFolder = "";
|
||||
String faceAiRaceStorageRelativeDir = "";
|
||||
String faceAiExpectedYear = "";
|
||||
String faceAiExpectedMonthFolder = "";
|
||||
if (faceAiRaceDate != null) {
|
||||
java.util.Calendar faceAiCalendar = java.util.Calendar.getInstance();
|
||||
String[] faceAiMonthNames = new String[] { "GENNAIO", "FEBBRAIO", "MARZO", "APRILE", "MAGGIO", "GIUGNO", "LUGLIO", "AGOSTO", "SETTEMBRE", "OTTOBRE", "NOVEMBRE", "DICEMBRE" };
|
||||
int faceAiMonthIndex;
|
||||
faceAiCalendar.setTime(faceAiRaceDate);
|
||||
faceAiExpectedYear = String.valueOf(faceAiCalendar.get(java.util.Calendar.YEAR));
|
||||
faceAiMonthIndex = faceAiCalendar.get(java.util.Calendar.MONTH);
|
||||
faceAiExpectedMonthFolder = String.format("%02d.%s", new Object[] { Integer.valueOf(faceAiMonthIndex + 1), faceAiMonthNames[faceAiMonthIndex] });
|
||||
}
|
||||
if (!faceAiRacePathBase.isEmpty()) {
|
||||
String[] faceAiPathSegments = faceAiRacePathBase.split("/");
|
||||
String[] faceAiPathSegments = faceAiRacePathBase.replace('\\', '/').split("/");
|
||||
java.util.ArrayList faceAiNormalizedSegments = new java.util.ArrayList();
|
||||
int faceAiYearIndex = -1;
|
||||
for (int faceAiSegmentIndex = 0; faceAiSegmentIndex < faceAiPathSegments.length; faceAiSegmentIndex++) {
|
||||
String faceAiSegment = faceAiPathSegments[faceAiSegmentIndex] != null ? faceAiPathSegments[faceAiSegmentIndex].trim() : "";
|
||||
if (!faceAiSegment.isEmpty()) {
|
||||
faceAiNormalizedSegments.add(faceAiSegment);
|
||||
}
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 0) {
|
||||
for (int faceAiSegmentIndex = 0; faceAiSegmentIndex < faceAiNormalizedSegments.size(); faceAiSegmentIndex++) {
|
||||
String faceAiSegment = (String) faceAiNormalizedSegments.get(faceAiSegmentIndex);
|
||||
if (faceAiSegment.matches("^\\d{4}$")) {
|
||||
faceAiRaceYear = faceAiSegment;
|
||||
faceAiYearIndex = faceAiSegmentIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (faceAiYearIndex >= 0) {
|
||||
if (faceAiNormalizedSegments.size() > faceAiYearIndex + 1) {
|
||||
faceAiRaceMonthFolder = (String) faceAiNormalizedSegments.get(faceAiYearIndex + 1);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > faceAiYearIndex + 2) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(faceAiYearIndex + 2);
|
||||
}
|
||||
} else if (faceAiNormalizedSegments.size() > 0) {
|
||||
faceAiRaceYear = (String) faceAiNormalizedSegments.get(0);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceMonthFolder = (String) faceAiNormalizedSegments.get(1);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 2) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(2);
|
||||
} else if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(faceAiNormalizedSegments.size() - 1);
|
||||
if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceMonthFolder = (String) faceAiNormalizedSegments.get(1);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 2) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(2);
|
||||
} else if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(faceAiNormalizedSegments.size() - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (faceAiRaceYear.isEmpty() && faceAiRaceDate != null) {
|
||||
java.util.Calendar faceAiCalendar = java.util.Calendar.getInstance();
|
||||
faceAiCalendar.setTime(faceAiRaceDate);
|
||||
faceAiRaceYear = String.valueOf(faceAiCalendar.get(java.util.Calendar.YEAR));
|
||||
if (!faceAiExpectedYear.isEmpty() && !faceAiExpectedYear.equals(faceAiRaceYear)) {
|
||||
faceAiRaceYear = faceAiExpectedYear;
|
||||
}
|
||||
if (!faceAiExpectedMonthFolder.isEmpty() && !faceAiExpectedMonthFolder.equals(faceAiRaceMonthFolder)) {
|
||||
faceAiRaceMonthFolder = faceAiExpectedMonthFolder;
|
||||
}
|
||||
if (faceAiRaceFolder.isEmpty()) {
|
||||
faceAiRaceFolder = String.valueOf(CR.getGara().getId_gara());
|
||||
|
|
|
|||
|
|
@ -66,31 +66,59 @@ String faceAiRaceYear = "";
|
|||
String faceAiRaceMonthFolder = "";
|
||||
String faceAiRaceFolder = "";
|
||||
String faceAiRaceStorageRelativeDir = "";
|
||||
String faceAiExpectedYear = "";
|
||||
String faceAiExpectedMonthFolder = "";
|
||||
if (faceAiRaceDate != null) {
|
||||
java.util.Calendar faceAiCalendar = java.util.Calendar.getInstance();
|
||||
String[] faceAiMonthNames = new String[] { "GENNAIO", "FEBBRAIO", "MARZO", "APRILE", "MAGGIO", "GIUGNO", "LUGLIO", "AGOSTO", "SETTEMBRE", "OTTOBRE", "NOVEMBRE", "DICEMBRE" };
|
||||
int faceAiMonthIndex;
|
||||
faceAiCalendar.setTime(faceAiRaceDate);
|
||||
faceAiExpectedYear = String.valueOf(faceAiCalendar.get(java.util.Calendar.YEAR));
|
||||
faceAiMonthIndex = faceAiCalendar.get(java.util.Calendar.MONTH);
|
||||
faceAiExpectedMonthFolder = String.format("%02d.%s", new Object[] { Integer.valueOf(faceAiMonthIndex + 1), faceAiMonthNames[faceAiMonthIndex] });
|
||||
}
|
||||
if (!faceAiRacePathBase.isEmpty()) {
|
||||
String[] faceAiPathSegments = faceAiRacePathBase.split("/");
|
||||
String[] faceAiPathSegments = faceAiRacePathBase.replace('\\', '/').split("/");
|
||||
java.util.ArrayList faceAiNormalizedSegments = new java.util.ArrayList();
|
||||
int faceAiYearIndex = -1;
|
||||
for (int faceAiSegmentIndex = 0; faceAiSegmentIndex < faceAiPathSegments.length; faceAiSegmentIndex++) {
|
||||
String faceAiSegment = faceAiPathSegments[faceAiSegmentIndex] != null ? faceAiPathSegments[faceAiSegmentIndex].trim() : "";
|
||||
if (!faceAiSegment.isEmpty()) {
|
||||
faceAiNormalizedSegments.add(faceAiSegment);
|
||||
}
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 0) {
|
||||
for (int faceAiSegmentIndex = 0; faceAiSegmentIndex < faceAiNormalizedSegments.size(); faceAiSegmentIndex++) {
|
||||
String faceAiSegment = (String) faceAiNormalizedSegments.get(faceAiSegmentIndex);
|
||||
if (faceAiSegment.matches("^\\d{4}$")) {
|
||||
faceAiRaceYear = faceAiSegment;
|
||||
faceAiYearIndex = faceAiSegmentIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (faceAiYearIndex >= 0) {
|
||||
if (faceAiNormalizedSegments.size() > faceAiYearIndex + 1) {
|
||||
faceAiRaceMonthFolder = (String) faceAiNormalizedSegments.get(faceAiYearIndex + 1);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > faceAiYearIndex + 2) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(faceAiYearIndex + 2);
|
||||
}
|
||||
} else if (faceAiNormalizedSegments.size() > 0) {
|
||||
faceAiRaceYear = (String) faceAiNormalizedSegments.get(0);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceMonthFolder = (String) faceAiNormalizedSegments.get(1);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 2) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(2);
|
||||
} else if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(faceAiNormalizedSegments.size() - 1);
|
||||
if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceMonthFolder = (String) faceAiNormalizedSegments.get(1);
|
||||
}
|
||||
if (faceAiNormalizedSegments.size() > 2) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(2);
|
||||
} else if (faceAiNormalizedSegments.size() > 1) {
|
||||
faceAiRaceFolder = (String) faceAiNormalizedSegments.get(faceAiNormalizedSegments.size() - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (faceAiRaceYear.isEmpty() && faceAiRaceDate != null) {
|
||||
java.util.Calendar faceAiCalendar = java.util.Calendar.getInstance();
|
||||
faceAiCalendar.setTime(faceAiRaceDate);
|
||||
faceAiRaceYear = String.valueOf(faceAiCalendar.get(java.util.Calendar.YEAR));
|
||||
if (!faceAiExpectedYear.isEmpty() && !faceAiExpectedYear.equals(faceAiRaceYear)) {
|
||||
faceAiRaceYear = faceAiExpectedYear;
|
||||
}
|
||||
if (!faceAiExpectedMonthFolder.isEmpty() && !faceAiExpectedMonthFolder.equals(faceAiRaceMonthFolder)) {
|
||||
faceAiRaceMonthFolder = faceAiExpectedMonthFolder;
|
||||
}
|
||||
if (faceAiRaceFolder.isEmpty()) {
|
||||
faceAiRaceFolder = String.valueOf(CR.getGara().getId_gara());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue