Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
3f7fd49
enhancement: Add result limit to findByTeamMemberOrCreatorAndInstitut…
DvLogys Apr 2, 2026
eeddaf0
feat: Add index to columns for search
DvLogys Apr 2, 2026
662b6ae
feat: Set search target as identifier instead of full_identifier
DvLogys Apr 2, 2026
177d37e
feat: Add basic_search procedures
DvLogys Apr 2, 2026
913df09
enhancement: Optimize login loading
DvLogys Apr 2, 2026
cff1997
refactor: Optimize imports
DvLogys Apr 2, 2026
e715ffb
wip: tmp working search bar
DvLogys Apr 7, 2026
2cf2ad9
Merge branch 'main' into feature/us-109-search
DvLogys Apr 8, 2026
83c9765
fix: Ignore ChartresDatasetInitializer.java
DvLogys Apr 8, 2026
4755d8d
refactor: Set ImportSpecs as record
DvLogys Apr 8, 2026
c259d4b
refactor: Optimize imports
DvLogys Apr 8, 2026
d6f5fae
fix: Error after creation
DvLogys Apr 8, 2026
2c3e97b
enhancement: Set display limit to action tree table and limit result …
DvLogys Apr 9, 2026
a0358d5
feat: Add custom tree table
DvLogys Apr 13, 2026
8be86a9
workaround: Add lazy model to treetable (Bug when changing page size)
DvLogys Apr 13, 2026
eed9f2f
Adding relationships fields (parents/children) in UE form
gregblt Apr 13, 2026
07e3765
workaround: Working cached
DvLogys Apr 13, 2026
21fb384
workround: Delete double call to load in LazyTreeTable
DvLogys Apr 14, 2026
9b35615
fix: Treetable error on first load and empty filter
DvLogys Apr 14, 2026
d5819a9
fix: Lag on globalsearch input
DvLogys Apr 14, 2026
ed3445e
Reorganization stratigraphic relationship fields
gregblt Apr 14, 2026
eebac74
feat: Dummy filter
DvLogys Apr 14, 2026
7d87839
Fixing importing chartres DS
gregblt Apr 15, 2026
4517dae
Fixing importing chartres DS
gregblt Apr 15, 2026
2ba4735
Fixing tests
gregblt Apr 15, 2026
fd4dd1e
Fixing tests
gregblt Apr 15, 2026
90ca40c
Fixing tests
gregblt Apr 16, 2026
138b832
Prevent infinite loops in BC
gregblt Apr 16, 2026
1c23a88
QC
gregblt Apr 16, 2026
af40ead
Merge pull request #290 from MOM-CNRS/feat/recording-unit-form
gregblt Apr 16, 2026
8bdf84f
refactor: Optimize imports
DvLogys Apr 16, 2026
2257c8f
refactor: Optimize imports
DvLogys Apr 16, 2026
1629ba6
workaround: Circular root child list
DvLogys Apr 17, 2026
352c2ed
fix: Clone error
DvLogys Apr 17, 2026
fd7ca96
workaround: remove comment
DvLogys Apr 17, 2026
548f528
workaround: setCount order
DvLogys Apr 17, 2026
6118a19
fix: Bug when empty filter
DvLogys Apr 17, 2026
2ef2af8
feat: Set lazymodel as generic en EntityTableViewModel
DvLogys Apr 17, 2026
b25877f
feat: Action unit node functions
DvLogys Apr 17, 2026
8fd46e6
workaround: Recording unit without scope
DvLogys Apr 17, 2026
945c14d
workaround: Add is leaf and load children methods
DvLogys Apr 17, 2026
914bede
fix: Button errors
DvLogys Apr 17, 2026
d41d612
Merge branch 'feature/us-109-search'
DvLogys Apr 17, 2026
6a11045
fix: Enable ChartresDatasetInitializer
DvLogys Apr 17, 2026
e9a7373
fix: Buttons on other pages
DvLogys Apr 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ span:has(.searchInput) {
margin-right: 5px;
}

.searchInput {
.searchInput > * {
width: 100%;
}
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,7 @@ body .ui-tabs .ui-tabs-panels .ui-tabs-panel {

.sia-form {
padding: 1em 1.4em;
max-width: 1200px;
}

#historyForm {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,8 @@

&.ui-autocomplete-panel {
.ui-button {
background: var(--green-active);
border-color: var(--green-active);
background: var(--siamois-green-active);
border-color: var(--siamois-green-active);
}

.ui-autocomplete-items .ui-autocomplete-item.ui-state-highlight {
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/fr/siamois/annotations/IgnoreInitializer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package fr.siamois.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* When this annotation is applied to a class that implements {@link fr.siamois.infrastructure.database.initializer.DatabaseInitializer}, that initialization class is ignored
* by {@link fr.siamois.domain.events.ApplicationReadyListener} when the application starts.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreInitializer {
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.siamois.domain.events;

import fr.siamois.annotations.IgnoreInitializer;
import fr.siamois.domain.models.UserInfo;
import fr.siamois.domain.models.exceptions.database.DatabaseDataInitException;
import fr.siamois.infrastructure.database.initializer.DatabaseInitializer;
Expand All @@ -10,6 +11,7 @@
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.AnnotationUtils;

import java.util.List;

Expand Down Expand Up @@ -38,6 +40,14 @@ public void onApplicationReady() {
ExecutionContextHolder.set(systemUser);

for (DatabaseInitializer initializer : databaseInitializer) {

IgnoreInitializer ignoreInitializer = AnnotationUtils.findAnnotation(initializer.getClass(), IgnoreInitializer.class);

if (ignoreInitializer != null) {
log.info("Ignored {} initializer", initializer.getClass().getName());
continue;
}

try {
initializer.initialize();
} catch (DatabaseDataInitException e) {
Expand Down
30 changes: 22 additions & 8 deletions src/main/java/fr/siamois/domain/models/actionunit/ActionUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,14 @@

@Data
@Entity
@Table(name = "action_unit", uniqueConstraints = @UniqueConstraint(columnNames = {"identifier","fk_institution_id"}))
@Table(name = "action_unit",
uniqueConstraints = @UniqueConstraint(columnNames = {"identifier", "fk_institution_id"}),
indexes = {
@Index(columnList = "name", name = "idx_action_unit_name"),
@Index(columnList = "full_identifier", name = "idx_action_unit_full_identifier"),
@Index(columnList = "fk_institution_id", name = "idx_action_unit_institution")
}
)
@Audited
public class ActionUnit extends TraceableEntity implements ArkEntity {

Expand Down Expand Up @@ -86,7 +93,7 @@ public ActionUnit(@NonNull ActionUnit unit) {

@ManyToOne
@JoinColumn(name = "fk_main_location")
private SpatialUnit mainLocation ;
private SpatialUnit mainLocation;

@ManyToMany
@JoinTable(
Expand Down Expand Up @@ -142,21 +149,30 @@ public String displayFullIdentifier() {
protected ActionCode primaryActionCode;

@NotNull
@Column(name="identifier")
@Column(name = "identifier")
protected String identifier;

@NotNull
@Column(name="full_identifier")
@Column(name = "full_identifier")
protected String fullIdentifier;

@NotNull
@Column(name="max_recording_unit_code", nullable = false)
@Column(name = "max_recording_unit_code", nullable = false)
protected Integer maxRecordingUnitCode;

@NotNull
@Column(name="min_recording_unit_code")
@Column(name = "min_recording_unit_code")
protected Integer minRecordingUnitCode;

/**
* This field is set to true when the action unit has children in the institution.
* The variable change is triggered when a new row is inserted in action_hierarchy
* and when this action_unit's id is the parent.
* The trigger trg_after_insert_au_hierarchy executes mark_au_as_not_leaf
*/
@Column(name = "has_childrens", columnDefinition = "boolean default false")
protected boolean hasChildrens = false;

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down Expand Up @@ -217,6 +233,4 @@ public String getSpatialContextNames() {
}




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package fr.siamois.domain.models.form.customfield;

import jakarta.persistence.DiscriminatorValue;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;


@Getter
@Setter
@Entity
@DiscriminatorValue("SELECT_MULTIPLE_RECORDING_UNIT")
@Table(name = "custom_field")
@SuperBuilder
@NoArgsConstructor
public class CustomFieldSelectMultipleRecordingUnit extends CustomField {


}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@

@Data
@Entity
@Table(name = "recording_unit")
@Table(name = "recording_unit", indexes = {
@Index(columnList = "full_identifier", name = "idx_ru_full_identifier"),
@Index(columnList = "fk_institution_id", name = "idx_ru_institution")
})
@NoArgsConstructor
@Audited
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
Expand Down Expand Up @@ -121,6 +124,15 @@ public RecordingUnit(RecordingUnit recordingUnit) {
@FieldCode
public static final String STRATI_FIELD_CODE = "SIARU.STRATI";

@FieldCode
public static final String EROSION_SHAPE_FIELD_CODE = "SIARU.EROSIONSHAPE";

@FieldCode
public static final String EROSION_PROFILE_FIELD_CODE = "SIARU.EROSIONPROFILE";

@FieldCode
public static final String EROSION_ORIENTATION_FIELD_CODE = "SIARU.EROSIONORIENTATION";

// Setters/Removers
@Override
public void setFormResponse(CustomFormResponse formResponse) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,23 @@ public abstract class RecordingUnitParent extends TraceableEntity {
@Column(name = "matrix_color")
protected String matrixColor;

@Column(name = "comments")
protected String comments;

@Column(name = "matrix_texture")
protected String matrixTexture;

@Column(name = "erosion_shape")
protected String erosionShape;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "fk_erosion_shape")
protected Concept erosionShape;

@Column(name = "erosion_orientation")
protected String erosionOrientation;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "fk_erosion_orientation")
protected Concept erosionOrientation;

@Column(name = "erosion_profile")
protected String erosionProfile;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "fk_erosion_profile")
protected Concept erosionProfile;

@Column(name = "taq")
protected Integer taq;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@

@Data
@Entity
@Table(name = "spatial_unit")
@Table(name = "spatial_unit", indexes = {
@Index(columnList = "name", name = "idx_spatial_unit_name"),
@Index(columnList = "fk_institution_id", name = "idx_spatial_unit_institution")
})
@Audited
public class SpatialUnit extends TraceableEntity implements ArkEntity {

Expand Down Expand Up @@ -82,7 +85,7 @@ public SpatialUnit (SpatialUnit spatialUnit) {
private Set<RecordingUnit> recordingUnitList;

@NotNull
@Column(name = "name", nullable = false, length = Integer.MAX_VALUE)
@Column(name = "name", nullable = false, length = 200)
protected String name;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@

@Data
@Entity
@Table(name = "specimen")
@Table(name = "specimen", indexes = {
@Index(columnList = "full_identifier", name = "idx_specimen_full_identifier"),
@Index(columnList = "fk_institution_id", name = "idx_specimen_institution")
})
@Audited
@NoArgsConstructor
public class Specimen extends TraceableEntity implements ArkEntity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ public boolean isManagerOf(ActionUnitSummaryDTO action, PersonDTO person) {
* @return The list of ActionUnit associated with the institution
*/
public List<ActionUnitDTO> findAllWithoutParentsByInstitution(Long institutionId) {
List<ActionUnit> res = actionUnitRepository.findRootsByInstitution(institutionId);
List<ActionUnit> res = actionUnitRepository.findRootsByInstitution(institutionId, 50L);
return res.stream()
.map(actionUnitMapper::convert)
.toList();
Expand Down Expand Up @@ -477,8 +477,8 @@ public List<ActionUnitDTO> findBySpatialContext(Long spatialId) {
}


public List<ActionUnitDTO> findByTeamMember(PersonDTO member, InstitutionDTO institution) {
List<ActionUnit> actionUnits = actionUnitRepository.findByTeamMemberOrCreatorAndInstitution(member.getId(), institution.getId());
public List<ActionUnitDTO> findByTeamMember(PersonDTO member, InstitutionDTO institution, long limit) {
List<ActionUnit> actionUnits = actionUnitRepository.findByTeamMemberOrCreatorAndInstitutionLimit(member.getId(), institution.getId(), limit);
return actionUnits.stream()
.map(actionUnitMapper::convert)
.toList();
Expand Down Expand Up @@ -513,4 +513,24 @@ public boolean existsRootChildrenByInstitution(Long institutionId) {
public boolean existsRootChildrenByRelatedSpatialUnit(Long spatialUnitId) {
return actionUnitRepository.existsRootChildrenByRelatedSpatialUnit(spatialUnitId);
}

public int countRootsInInstitution(Long institutionId) {
return actionUnitRepository.countRootsInInstitution(institutionId);
}

public List<ActionUnit> findRootsByInstitution(Long institutionId, int first, int pageSize) {
return actionUnitRepository.findRootsByInstitution(institutionId, first, pageSize);
}

public List<ActionUnit> findRootsByInstitutionAndName(Long institutionId, String name, int first, int pageSize) {
return actionUnitRepository.findRootsByInstitutionAndName(institutionId, name, first, pageSize);
}

public int countRootsByInstitutionAndName(Long institutionId, String name) {
return actionUnitRepository.countRootsByInstitutionAndName(institutionId, name);
}

public boolean isRoot(Long actionUnitId, Long institutionId) {
return actionUnitRepository.isRoot(actionUnitId, institutionId);
}
}
Loading
Loading