/* Copyright (c) 2014 Boundless and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Distribution License v1.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/org/documents/edl-v10.html * * Contributors: * Gabriel Roldan (Boundless) - initial implementation */ package org.locationtech.geogig.repository; import java.io.Serializable; import java.util.Map; import org.locationtech.geogig.api.ContextBuilder; import com.google.common.base.Optional; import com.google.common.collect.Maps; /** * Hints that guice created dependencies can accept on their constructors, contains flags to * enable/disable operational modes on databases. In the future may provide other kind of hints to * other components. * * @see ContextBuilder#build(Hints) */ public class Hints implements Serializable { private static final long serialVersionUID = -1428808289446453837L; public static final String OBJECTS_READ_ONLY = "OBJECTS_READ_ONLY"; public static final String STAGING_READ_ONLY = "STAGING_READ_ONLY"; public static final String REMOTES_READ_ONLY = "REMOTES_READ_ONLY"; private Map<String, Serializable> hintsMap = Maps.newHashMap(); public void set(String key, Serializable value) { hintsMap.put(key, value); } public Optional<Serializable> get(final String key) { return Optional.fromNullable(hintsMap.get(key)); } public boolean getBoolean(final String key) { return Boolean.TRUE.equals(hintsMap.get(key)); } @Override public String toString() { return hintsMap.toString(); } @Override public boolean equals(Object o) { if (o == this) { return true; } if (!(o instanceof Hints)) { return false; } return hintsMap.equals(((Hints) o).hintsMap); } public static Hints readOnly() { Hints hints = new Hints(); hints.set(Hints.OBJECTS_READ_ONLY, Boolean.TRUE); hints.set(Hints.STAGING_READ_ONLY, Boolean.TRUE); hints.set(Hints.REMOTES_READ_ONLY, Boolean.TRUE); return hints; } public static Hints readWrite() { Hints hints = new Hints(); hints.set(Hints.OBJECTS_READ_ONLY, Boolean.FALSE); hints.set(Hints.STAGING_READ_ONLY, Boolean.FALSE); hints.set(Hints.REMOTES_READ_ONLY, Boolean.FALSE); return hints; } }