All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.plotsquared.core.database.AbstractDB Maven / Gradle / Ivy

There is a newer version: 7.4.0
Show newest version
/*
 * PlotSquared, a land and world management plugin for Minecraft.
 * Copyright (C) IntellectualSites 
 * Copyright (C) IntellectualSites team and contributors
 *
 * 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 .
 */
package com.plotsquared.core.database;

import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotCluster;
import com.plotsquared.core.plot.PlotId;
import com.plotsquared.core.plot.comment.PlotComment;
import com.plotsquared.core.plot.flag.PlotFlag;
import com.plotsquared.core.util.task.RunnableVal;
import org.checkerframework.checker.nullness.qual.NonNull;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;

public interface AbstractDB {

    /**
     * The UUID that will count as EVERYONE.
     */
    UUID everyone = UUID.fromString("1-1-3-3-7");

    /**
     * Sets Plot owner.
     *
     * @param plot the plot
     * @param uuid the uuid of the new owner
     */
    void setOwner(Plot plot, UUID uuid);

    /**
     * Creates all settings, and create default helpers, trusted + denied lists.
     *
     * @param plots    Plots for which the default table entries should be created
     * @param whenDone the task to run when the method is finished executing
     */
    void createPlotsAndData(List plots, Runnable whenDone);

    /**
     * Creates a plot.
     *
     * @param plot the plot to create
     */
    void createPlotSafe(final Plot plot, final Runnable success, final Runnable failure);

    /**
     * Create tables.
     *
     * @throws Exception If the database manager is unable to create the tables
     */
    void createTables() throws Exception;

    /**
     * Deletes a plot.
     *
     * @param plot the plot to delete
     */
    void delete(Plot plot);

    void deleteSettings(Plot plot);

    void deleteHelpers(Plot plot);

    void deleteTrusted(Plot plot);

    /**
     * Removes all denied players from the plot.
     *
     * @param plot the plot
     */
    void deleteDenied(Plot plot);

    /**
     * Deletes all comments from the plot.
     *
     * @param plot the plot
     */
    void deleteComments(Plot plot);

    void deleteRatings(Plot plot);

    void delete(PlotCluster cluster);

    void addPersistentMeta(UUID uuid, String key, byte[] meta, boolean delete);

    void removePersistentMeta(UUID uuid, String key);

    void getPersistentMeta(UUID uuid, RunnableVal> result);

    /**
     * Creates the plot settings.
     *
     * @param id   the plot entry id
     * @param plot the plot
     */
    void createPlotSettings(int id, Plot plot);

    /**
     * Gets the table entry ID.
     *
     * @param plot the plot
     * @return {@link Integer} = Plot Entry Id
     */
    int getId(Plot plot);

    /**
     * Gets the id of a given plot cluster.
     *
     * @param cluster PlotCluster Object
     * @return Integer = Cluster Entry Id
     */
    int getClusterId(PlotCluster cluster);

    boolean convertFlags();

    /**
     * @return A linked HashMap containing all plots
     */
    HashMap> getPlots();

    /**
     * @param toValidate
     */
    void validateAllPlots(Set toValidate);

    /**
     * @return A HashMap containing all plot clusters
     */
    HashMap> getClusters();

    /**
     * Sets the merged status for a plot.
     *
     * @param plot   The plot to set the merged status of
     * @param merged boolean[]
     */
    void setMerged(Plot plot, boolean[] merged);

    /**
     * Swaps the settings, helpers etc. of two plots.
     *
     * @param plot1 Plot1
     * @param plot2 Plot2
     */
    CompletableFuture swapPlots(Plot plot1, Plot plot2);

    /**
     * Sets plot flag.
     *
     * @param plot Plot Object
     * @param flag Flag to set
     */
    void setFlag(Plot plot, PlotFlag flag);

    /**
     * Remove a plot flag.
     *
     * @param plot Plot Object
     * @param flag Flag to remove
     */
    void removeFlag(Plot plot, PlotFlag flag);

    /**
     * Renames a cluster to the given name.
     *
     * @param cluster the cluster to rename
     * @param name    the new cluster name
     */
    void setClusterName(PlotCluster cluster, String name);

    /**
     * Sets the plot alias.
     *
     * @param plot  Plot for which the alias should be set
     * @param alias Plot Alias
     */
    void setAlias(Plot plot, String alias);

    /**
     * Purges a plot.
     *
     * @param uniqueIds list of plot id (db) to be purged
     */
    void purgeIds(Set uniqueIds);

    /**
     * Purges a whole world.
     *
     * @param area    World in which the plots should be purged
     * @param plotIds the {@link PlotId}s of {@link Plot}s to purge
     */
    void purge(PlotArea area, Set plotIds);

    /**
     * Sets the plot home position.
     *
     * @param plot     the plot
     * @param position the position of plot home
     */
    void setPosition(Plot plot, String position);

    /**
     * @param cluster
     * @param position
     */
    void setPosition(PlotCluster cluster, String position);

    /**
     * Remove the specified player from the trust list of the specified plot.
     *
     * @param plot the plot
     * @param uuid the uuid of the player to remove
     */
    void removeTrusted(Plot plot, UUID uuid);

    /**
     * @param cluster PlotCluster Object
     * @param uuid    Player that should be removed
     */
    void removeHelper(PlotCluster cluster, UUID uuid);

    /**
     * @param plot the plot
     * @param uuid Player that should be removed
     */
    void removeMember(Plot plot, UUID uuid);

    /**
     * @param cluster
     * @param uuid
     */
    void removeInvited(PlotCluster cluster, UUID uuid);

    /**
     * @param plot Plot Object
     * @param uuid Player that should be removed
     */
    void setTrusted(Plot plot, UUID uuid);

    /**
     * @param cluster PlotCluster Object
     * @param uuid    Player that should be removed
     */
    void setHelper(PlotCluster cluster, UUID uuid);

    /**
     * @param plot Plot Object
     * @param uuid Player that should be added
     */
    void setMember(Plot plot, UUID uuid);

    /**
     * @param cluster
     * @param uuid
     */
    void setInvited(PlotCluster cluster, UUID uuid);

    /**
     * Removes the specified player from the denied list of the specified plot.
     *
     * @param plot the plot
     * @param uuid the uuid of the player to remove
     */
    void removeDenied(Plot plot, UUID uuid);

    /**
     * Denies the specified player from the given plot.
     *
     * @param plot the plot
     * @param uuid the uuid of the player to deny
     */
    void setDenied(Plot plot, UUID uuid);

    /**
     * Gets the ratings from the specified plot.
     *
     * @param plot the plot
     * @return the plot ratings (pre-calculated)
     */
    HashMap getRatings(Plot plot);

    /**
     * Sets a rating for a plot.
     *
     * @param plot
     * @param rater
     * @param value
     */
    void setRating(Plot plot, UUID rater, int value);

    /**
     * Removes the specified comment from the given plot.
     *
     * @param plot    the plot
     * @param comment the comment to remove
     */
    void removeComment(Plot plot, PlotComment comment);

    /**
     * Clears the specified inbox on the given plot.
     *
     * @param plot  the plot
     * @param inbox the inbox to clear
     */
    void clearInbox(Plot plot, String inbox);

    /**
     * Adds the specified comment to the given plot.
     *
     * @param plot    the plot
     * @param comment the comment to add
     */
    void setComment(Plot plot, PlotComment comment);

    /**
     * Gets Plot comments.
     *
     * @param plot The Plot to get comments from
     */
    void getComments(@NonNull Plot plot, String inbox, RunnableVal> whenDone);

    void createPlotAndSettings(Plot plot, Runnable whenDone);

    void createCluster(PlotCluster cluster);

    void resizeCluster(PlotCluster current, PlotId min, PlotId max);

    void movePlot(Plot originalPlot, Plot newPlot);

    /**
     * Replaces a old uuid with a new one in the database.
     *
     * 
    *
  • Useful for replacing a few uuids (not the entire database).
  • *
  • or entire conversion, the uuidconvert command scales better.
  • *
* * @param old * @param now */ void replaceUUID(UUID old, UUID now); /** * Don't use this method unless you want to ruin someone's server. * * @return {@code true} if the tables were deleted, {@code false} when an error is encountered */ boolean deleteTables(); /** * Closes the database. Generally not recommended to be used by add-ons. */ void close(); void replaceWorld(String oldWorld, String newWorld, PlotId min, PlotId max); void updateTables(int[] oldVersion); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy