fr.ird.observe.client.spi.OpenDtoManager Maven / Gradle / Ivy
package fr.ird.observe.client.spi;
/*-
* #%L
* ObServe Toolkit :: Common Client
* %%
* Copyright (C) 2008 - 2017 IRD, Ultreia.io
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* .
* #L%
*/
import com.google.common.base.Preconditions;
import fr.ird.observe.client.util.ProgressModel;
import java.io.Closeable;
import java.util.Objects;
/**
* Pour gérer les données ouvertes sur une source de données dans l'application.
* À l'ouverture d'une source de données rien n'est ouvert.
* Les états de cet objet sont liés au cylce de vie d'une source de données dans l'application.
*
* @author Tony Chemit - [email protected]
*/
public abstract class OpenDtoManager implements Closeable {
private final ClientDataContext dataContext;
public abstract void sanitizeIds(ProgressModel progressModel, String[] ids);
public OpenDtoManager(ClientDataContext dataContext) {
this.dataContext = dataContext;
}
private boolean canOpenProgram() {
return !dataContext.isOpenProgram();
}
public void openProgram(String programId) {
Objects.requireNonNull(programId, "id cant be null");
Preconditions.checkState(canOpenProgram(), "a program is already opened");
dataContext.setOpenProgramId(programId);
}
public boolean isOpenProgram(String programId) {
Objects.requireNonNull(programId, "id cant be null");
return programId.equals(dataContext.getOpenProgramId());
}
public void closeProgram(String programId) {
Objects.requireNonNull(programId, "id cant be null");
Preconditions.checkState(isOpenProgram(programId), "this program is not opened");
dataContext.setOpenProgramId(null);
}
// Trip Seine
public boolean canOpenTripSeine() {
return !dataContext.isOpenTrip();
}
public void openTripSeine(String programId, String tripSeineId) {
openProgram(programId);
Objects.requireNonNull(tripSeineId, "id cant be null");
Preconditions.checkState(canOpenTripSeine(), "a trip is already opened");
dataContext.setOpenTripSeineId(tripSeineId);
}
public boolean isOpenTripSeine(String tripSeineId) {
Objects.requireNonNull(tripSeineId, "id cant be null");
return tripSeineId.equals(dataContext.getOpenTripSeineId());
}
public void closeTripSeine(String tripSeineId) {
Objects.requireNonNull(tripSeineId, "id cant be null");
Preconditions.checkState(isOpenTripSeine(tripSeineId), "this trip is not opened");
if (dataContext.isOpenRoute()) {
String openRouteId = dataContext.getOpenRouteId();
closeRoute(openRouteId);
}
dataContext.setOpenTripSeineId(null);
dataContext.setOpenProgramId(null);
}
// Route
public boolean canOpenRoute(String parentTripSeineId) {
Objects.requireNonNull(parentTripSeineId, "id cant be null");
return isOpenTripSeine(parentTripSeineId) && !dataContext.isOpenRoute();
}
public void openRoute(String parentTripSeineId, String routeId) {
Objects.requireNonNull(parentTripSeineId, "id cant be null");
Objects.requireNonNull(routeId, "id cant be null");
Preconditions.checkState(canOpenRoute(parentTripSeineId), "the trip is not opened or another route already opened");
dataContext.setOpenRouteId(routeId);
}
public boolean isOpenRoute(String routeId) {
Objects.requireNonNull(routeId, "id cant be null");
return routeId.equals(dataContext.getOpenRouteId());
}
public void closeRoute(String routeId) {
Objects.requireNonNull(routeId, "id cant be null");
Preconditions.checkState(isOpenRoute(routeId), "this route is not opened");
if (dataContext.isOpenActivitySeine()) {
String openActivitySeineId = dataContext.getOpenActivitySeineId();
closeActivitySeine(openActivitySeineId);
}
dataContext.setOpenRouteId(null);
}
public void closeRouteIfOpen(String routeId) {
Objects.requireNonNull(routeId, "id cant be null");
if (!isOpenRoute(routeId)) {
return;
}
if (dataContext.isOpenActivitySeine()) {
String openActivitySeineId = dataContext.getOpenActivitySeineId();
closeActivitySeine(openActivitySeineId);
}
dataContext.setOpenRouteId(null);
}
// Activity Seine
public boolean canOpenActivitySeine(String parentRouteId) {
Objects.requireNonNull(parentRouteId, "id cant be null");
return isOpenRoute(parentRouteId) && !dataContext.isOpenActivitySeine();
}
public void openActivitySeine(String parentRouteId, String activitySeineId) {
Objects.requireNonNull(parentRouteId, "id cant be null");
Objects.requireNonNull(activitySeineId, "id cant be null");
Preconditions.checkState(canOpenActivitySeine(parentRouteId), "the route is not opened or another activity is already opened");
dataContext.setOpenActivitySeineId(activitySeineId);
}
public void openSetSeine(String activitySeineId, String setSeineId) {
Objects.requireNonNull(activitySeineId, "id cant be null");
Objects.requireNonNull(setSeineId, "id cant be null");
Preconditions.checkState(isOpenActivitySeine(activitySeineId), "the route is not opened or another activity is already opened");
dataContext.setOpenSetSeineId(setSeineId);
}
public boolean isOpenActivitySeine(String activitySeineId) {
Objects.requireNonNull(activitySeineId, "id cant be null");
return activitySeineId.equals(dataContext.getOpenActivitySeineId());
}
public void closeActivitySeine(String activitySeineId) {
Objects.requireNonNull(activitySeineId, "id cant be null");
Preconditions.checkState(isOpenActivitySeine(activitySeineId), "this activity is not opened");
if (dataContext.isOpenSet()) {
// on ferme aussi la calée associée
dataContext.setOpenSetSeineId(null);
}
dataContext.setOpenActivitySeineId(null);
}
public void closeActivitySeineIfOpen(String activitySeineId) {
Objects.requireNonNull(activitySeineId, "id cant be null");
if (!isOpenActivitySeine(activitySeineId)) {
return;
}
if (dataContext.isOpenSet()) {
// on ferme aussi la calée associée
dataContext.setOpenSetSeineId(null);
}
dataContext.setOpenActivitySeineId(null);
}
// Trip Longline
public boolean canOpenTripLongline() {
return !dataContext.isOpenTrip();
}
public void openTripLongline(String programId, String tripLongLineId) {
openProgram(programId);
Objects.requireNonNull(tripLongLineId, "id cant be null");
Preconditions.checkState(canOpenTripLongline(), "a trip is already opened");
dataContext.setOpenTripLonglineId(tripLongLineId);
}
public boolean isOpenTripLongline(String tripLongLineId) {
Objects.requireNonNull(tripLongLineId, "id cant be null");
return tripLongLineId.equals(dataContext.getOpenTripLonglineId());
}
public void closeTripLongline(String tripLongLineId) {
Objects.requireNonNull(tripLongLineId, "id cant be null");
Preconditions.checkState(isOpenTripLongline(tripLongLineId), "this trip is not opened");
if (dataContext.isOpenActivityLongline()) {
String openActivityLonglineId = dataContext.getOpenActivityLonglineId();
closeActivityLongline(openActivityLonglineId);
}
dataContext.setOpenTripLonglineId(null);
dataContext.setOpenProgramId(null);
}
// Activity Longline
public boolean canOpenActivityLongline(String parentTripLonglineId) {
Objects.requireNonNull(parentTripLonglineId, "id cant be null");
return isOpenTripLongline(parentTripLonglineId) && !dataContext.isOpenActivityLongline();
}
public void openActivityLongline(String parentTripLonglineId, String activityLonglineId) {
Objects.requireNonNull(parentTripLonglineId, "id cant be null");
Objects.requireNonNull(activityLonglineId, "id cant be null");
Preconditions.checkState(canOpenActivityLongline(parentTripLonglineId), "the trip is not opened or another activity is already opened");
dataContext.setOpenActivityLonglineId(activityLonglineId);
}
public void openSetLongline(String activityLonglineId, String setLonglineId) {
Objects.requireNonNull(activityLonglineId, "id cant be null");
Objects.requireNonNull(setLonglineId, "id cant be null");
dataContext.setOpenSetLonglineId(setLonglineId);
}
public boolean isOpenActivityLongline(String activityLonglineId) {
Objects.requireNonNull(activityLonglineId, "id cant be null");
return activityLonglineId.equals(dataContext.getOpenActivityLonglineId());
}
public void closeActivityLongline(String activityLonglineId) {
Objects.requireNonNull(activityLonglineId, "id cant be null");
Preconditions.checkState(isOpenActivityLongline(activityLonglineId), "this activity is not opened");
if (dataContext.isOpenSet()) {
// on ferme aussi la calée associée
dataContext.setOpenSetLonglineId(null);
}
dataContext.setOpenActivityLonglineId(null);
}
public void closeActivityLonglineIfOpen(String activityLonglineId) {
Objects.requireNonNull(activityLonglineId, "id cant be null");
if (!isOpenActivityLongline(activityLonglineId)) {
return;
}
if (dataContext.isOpenSet()) {
// on ferme aussi la calée associée
dataContext.setOpenSetLonglineId(null);
}
dataContext.setOpenActivityLonglineId(null);
}
public boolean isOpen(String openableId) {
return isOpenTripSeine(openableId)
|| isOpenRoute(openableId)
|| isOpenActivitySeine(openableId)
|| isOpenTripLongline(openableId)
|| isOpenActivityLongline(openableId);
}
public boolean isOpenActivity(String activityId) {
return isOpenActivitySeine(activityId)
|| isOpenActivityLongline(activityId);
}
@Override
public void close() {
dataContext.resetOpen();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy