package com.constellio.model.entities.records.wrappers;
import com.constellio.data.utils.TimeProvider;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.schemas.MetadataSchemaTypes;
import com.constellio.model.entities.security.global.AuthorizationDetails;
import org.joda.time.LocalDate;
import java.util.List;
/**
* Created by Constellio on 2016-12-21.
*/
public class SolrAuthorizationDetails extends RecordWrapper implements AuthorizationDetails {
public static final String SCHEMA_TYPE = "authorizationDetails";
public static final String DEFAULT_SCHEMA = SCHEMA_TYPE + "_default";
public static final String IDENTIFIER = "identifier";
public static final String ROLES = "roles";
public static final String START_DATE = "startDate";
public static final String END_DATE = "endDate";
public static final String TARGET = "target";
public static final String SYNCED = "synced";
public SolrAuthorizationDetails(Record record,
MetadataSchemaTypes types) {
super(record, types, SCHEMA_TYPE);
}
public SolrAuthorizationDetails setTitle(String title) {
super.setTitle(title);
return this;
}
public String getIdentifier() {
return get(IDENTIFIER);
}
public SolrAuthorizationDetails setIdentifier(String identifier) {
set(IDENTIFIER, identifier);
return this;
}
@Override
public List<String> getRoles() {
return get(ROLES);
}
public SolrAuthorizationDetails setRoles(List<String> roles) {
set(ROLES, roles);
return this;
}
@Override
public LocalDate getStartDate() {
return get(START_DATE);
}
public SolrAuthorizationDetails setStartDate(LocalDate startDate) {
set(START_DATE, startDate);
return this;
}
@Override
public LocalDate getEndDate() {
return get(END_DATE);
}
public SolrAuthorizationDetails setEndDate(LocalDate endDate) {
set(END_DATE, endDate);
return this;
}
public String getTarget() {
return get(TARGET);
}
public SolrAuthorizationDetails setTarget(String target) {
set(TARGET, target);
return this;
}
@Override
public boolean isSynced() {
return Boolean.TRUE.equals(get(SYNCED));
}
@Override
public AuthorizationDetails withNewEndDate(LocalDate endate) {
setEndDate(endate);
return this;
}
@Override
public boolean isFutureAuthorization() {
return getStartDate() != null && TimeProvider.getLocalDate().isBefore(getStartDate());
}
public SolrAuthorizationDetails setSynced(Boolean isSynced) {
set(SYNCED, isSynced);
return this;
}
@Override
public boolean isActiveAuthorization() {
LocalDate now = TimeProvider.getLocalDate();
LocalDate startDate = getStartDate();
LocalDate endDate = getEndDate();
if (startDate != null && endDate == null) {
return !startDate.isAfter(now);
} else if (startDate == null && endDate != null) {
return !endDate.isBefore(now);
} else if (startDate != null && endDate != null) {
return !startDate.isAfter(now) && !endDate.isBefore(now);
} else {
return true;
}
}
}