Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
25 changes: 16 additions & 9 deletions src/main/java/org/gridsuite/filter/AbstractFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,24 @@
*/
package org.gridsuite.filter;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonProperty.Access;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.*;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.gridsuite.filter.expertfilter.ExpertFilter;
import org.gridsuite.filter.identifierlistfilter.FilterEquipments;
import org.gridsuite.filter.identifierlistfilter.FilteredIdentifiables;
import org.gridsuite.filter.identifierlistfilter.IdentifiableAttributes;
import org.gridsuite.filter.identifierlistfilter.IdentifierListFilter;
import org.gridsuite.filter.utils.EquipmentType;
import org.gridsuite.filter.utils.FilterType;

import java.util.Date;
import java.util.List;
Expand All @@ -25,15 +33,10 @@
* @author Jacques Borsenberger <jacques.borsenberger at rte-france.com>
* @author Franck Lecuyer <franck.lecuyer at rte-france.com>
*/
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "type",
include = JsonTypeInfo.As.EXISTING_PROPERTY,
visible = true
)
@JsonTypeInfo(use = Id.NAME, property = "type", include = As.EXISTING_PROPERTY, visible = true)
@JsonSubTypes({//Below, we define the names and the binding classes.
@JsonSubTypes.Type(value = IdentifierListFilter.class, name = "IDENTIFIER_LIST"),
@JsonSubTypes.Type(value = ExpertFilter.class, name = "EXPERT")
@Type(value = IdentifierListFilter.class, name = "IDENTIFIER_LIST"),
@Type(value = ExpertFilter.class, name = "EXPERT")
})
@Data
@NoArgsConstructor
Expand All @@ -47,6 +50,10 @@ public abstract class AbstractFilter implements IFilterAttributes {

private EquipmentType equipmentType;

@JsonProperty(access = Access.READ_ONLY)
@Override
public abstract FilterType getType();

public FilterEquipments toFilterEquipments(List<IdentifiableAttributes> identifiableAttributes) {
return FilterEquipments.builder()
.filterId(id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.powsybl.iidm.network.TopologyKind;
import lombok.EqualsAndHashCode;
import lombok.Getter;
Expand Down Expand Up @@ -41,7 +40,6 @@ public ExpertFilter(UUID id, Date modificationDate, EquipmentType equipmentType,
this.rules = rules;
}

@JsonProperty(access = JsonProperty.Access.READ_ONLY)
@Override
public FilterType getType() {
return FilterType.EXPERT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty.Access;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.powsybl.iidm.network.Identifiable;
import lombok.AllArgsConstructor;
import lombok.Getter;
Expand All @@ -30,20 +32,17 @@
/**
* @author Antoine Bouhours <antoine.bouhours at rte-france.com>
*/
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "dataType",
include = JsonTypeInfo.As.EXISTING_PROPERTY)
@JsonTypeInfo(use = Id.NAME, property = "dataType", include = As.EXISTING_PROPERTY, visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = StringExpertRule.class, name = "STRING"),
@JsonSubTypes.Type(value = BooleanExpertRule.class, name = "BOOLEAN"),
@JsonSubTypes.Type(value = EnumExpertRule.class, name = "ENUM"),
@JsonSubTypes.Type(value = NumberExpertRule.class, name = "NUMBER"),
@JsonSubTypes.Type(value = CombinatorExpertRule.class, name = "COMBINATOR"),
@JsonSubTypes.Type(value = FilterUuidExpertRule.class, name = "FILTER_UUID"),
@JsonSubTypes.Type(value = PropertiesExpertRule.class, name = "PROPERTIES"),
@Type(value = StringExpertRule.class, name = "STRING"),
@Type(value = BooleanExpertRule.class, name = "BOOLEAN"),
@Type(value = EnumExpertRule.class, name = "ENUM"),
@Type(value = NumberExpertRule.class, name = "NUMBER"),
@Type(value = CombinatorExpertRule.class, name = "COMBINATOR"),
@Type(value = FilterUuidExpertRule.class, name = "FILTER_UUID"),
@Type(value = PropertiesExpertRule.class, name = "PROPERTIES"),
})
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonInclude(Include.NON_NULL)
@NoArgsConstructor
@AllArgsConstructor
@Getter
Expand All @@ -61,6 +60,7 @@ public abstract class AbstractExpertRule {

public abstract boolean evaluateRule(Identifiable<?> identifiable, FilterLoader filterLoader, Map<UUID, FilterEquipments> cachedUuidFilters);

@JsonProperty(access = Access.READ_ONLY)
public abstract DataType getDataType();

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Identifiable;
import lombok.AllArgsConstructor;
Expand Down Expand Up @@ -42,7 +41,6 @@ public String getStringValue() {
}

@Override
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public DataType getDataType() {
return DataType.BOOLEAN;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Identifiable;
import lombok.NoArgsConstructor;
Expand All @@ -26,7 +25,6 @@
@SuperBuilder
public class CombinatorExpertRule extends AbstractExpertRule {
@Override
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public DataType getDataType() {
return DataType.COMBINATOR;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Identifiable;
import lombok.NoArgsConstructor;
Expand All @@ -27,7 +26,6 @@
@SuperBuilder
public class EnumExpertRule extends StringExpertRule {
@Override
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public DataType getDataType() {
return DataType.ENUM;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Identifiable;
import lombok.NoArgsConstructor;
Expand All @@ -28,7 +27,6 @@
@SuperBuilder
public class FilterUuidExpertRule extends StringExpertRule {
@Override
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public DataType getDataType() {
return DataType.FILTER_UUID;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Identifiable;
Expand Down Expand Up @@ -45,7 +44,6 @@ public static Double getNumberValue(String value) {
}

@Override
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public DataType getDataType() {
return DataType.NUMBER;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
package org.gridsuite.filter.expertfilter.expertrule;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Identifiable;
Expand Down Expand Up @@ -53,7 +52,6 @@ public String getStringValue() {
}

@Override
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public DataType getDataType() {
return DataType.STRING;
}
Expand Down
26 changes: 9 additions & 17 deletions src/main/java/org/gridsuite/filter/utils/FilterServiceUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@
*/
package org.gridsuite.filter.utils;

import com.powsybl.iidm.network.Identifiable;
import com.powsybl.iidm.network.Network;
import org.gridsuite.filter.FilterLoader;
import org.gridsuite.filter.AbstractFilter;
import org.gridsuite.filter.FilterLoader;
import org.gridsuite.filter.identifierlistfilter.FilterEquipments;
import org.gridsuite.filter.identifierlistfilter.IdentifiableAttributes;
import org.gridsuite.filter.identifierlistfilter.IdentifierListFilter;

import java.util.List;
import java.util.UUID;
import java.util.function.Function;

/**
* @author Franck Lecuyer <franck.lecuyer at rte-france.com>
Expand All @@ -25,25 +27,15 @@ private FilterServiceUtils() {
}

public static List<IdentifiableAttributes> getIdentifiableAttributes(AbstractFilter filter, Network network, FilterLoader filterLoader) {
if (filter instanceof IdentifierListFilter identifierListFilter &&
(filter.getEquipmentType() == EquipmentType.GENERATOR ||
filter.getEquipmentType() == EquipmentType.LOAD)) {
return FiltersUtils.getIdentifiables(filter, network, filterLoader)
.stream()
.map(identifiable -> new IdentifiableAttributes(identifiable.getId(),
identifiable.getType(),
identifierListFilter.getDistributionKey(identifiable.getId())))
.toList();
} else {
return FiltersUtils.getIdentifiables(filter, network, filterLoader).stream()
.map(identifiable -> new IdentifiableAttributes(identifiable.getId(), identifiable.getType(), null))
.toList();
}
final Function<? super Identifiable<?>, IdentifiableAttributes> mapper = (filter instanceof IdentifierListFilter identifierListFilter &&
(filter.getEquipmentType() == EquipmentType.GENERATOR || filter.getEquipmentType() == EquipmentType.LOAD))
? (identifiable -> new IdentifiableAttributes(identifiable.getId(), identifiable.getType(), identifierListFilter.getDistributionKey(identifiable.getId())))
: (identifiable -> new IdentifiableAttributes(identifiable.getId(), identifiable.getType(), null));
return FiltersUtils.getIdentifiables(filter, network, filterLoader).stream().map(mapper).toList();
}

public static List<FilterEquipments> getFilterEquipmentsFromUuid(Network network, UUID uuid, FilterLoader filterLoader) {
List<AbstractFilter> filters = filterLoader.getFilters(List.of(uuid));
return filters.stream()
return filterLoader.getFilters(List.of(uuid)).stream()
.map(filter -> filter.toFilterEquipments(FilterServiceUtils.getIdentifiableAttributes(filter, network, filterLoader)))
.toList();
}
Expand Down
Loading
Loading