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

net.sf.robocode.repository.IRepository Maven / Gradle / Ivy

/*
 * Copyright (c) 2001-2023 Mathew A. Nelson and Robocode contributors
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * https://robocode.sourceforge.io/license/epl-v10.html
 */
package net.sf.robocode.repository;


import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import net.sf.robocode.repository.items.IRepositoryItem;
import net.sf.robocode.repository.root.IRepositoryRoot;


/**
 * Interface for a repository containing meta-data for robot and team items.

* * Items can be retrieved from the reposition by using {@link IRepository#getItem(String)} using "friendly URLs" * that identifies the individual item. See {@link IRepositoryItem#getFriendlyURLs()}. An item has typically several * friendly URLs that identifies it, e.g. a file URL to a local property file or class file, or a URL to a JAR entry. * * @author Flemming N. Larsen (original) */ public interface IRepository { /** * Loads data into this repository, previously saved by {@link #save(OutputStream)}. * * @param in is an input stream used for reading the data. * * @see #save(OutputStream) */ void load(InputStream in); /** * Saves the data in this repository to an output stream. * * @param out is the output stream used for writing the data. * * @see #load(InputStream) */ void save(OutputStream out); /** * Adds or updates an item.

* * If the item is not present in the repository, it will be added; otherwise it will be updated, if the specified * item has a never version than the existing item in the repository.

* * This method will store the item under each friendly URL (keys) by using {@link IRepositoryItem#getFriendlyURLs()}. * * @param item is the item to add or update. * * @see #getItem(String) * @see #getItems() */ void addOrUpdateItem(IRepositoryItem item); /** * Returns an item stored in this repository identified by a friendly URL (key). * * @param friendlyUrl is a key to the item used when the item was stored using {@link IRepositoryItem#getFriendlyURLs()}. * @return an item from the repository identified by the friendly URL or null if the item does not exist. * * @see #addOrUpdateItem(IRepositoryItem) * @see #getItems() */ IRepositoryItem getItem(String friendlyUrl); /** * Returns all items stored in this repository. * @return a map containing items, where the keys are friendly URLs used for identifying the items. * * @see #getItem(String) */ Map getItems(); /** * Returns all repository roots stored in this repository.

* * @return a map containing repository roots, where the keys are URLs used for identifying the individual * repository root. * * @see IRepositoryRoot */ Map getRoots(); /** * Removes a repository root from this repository. * * @param url is the URL (key) of the repository root to remove. */ void removeRoot(String url); /** * Removes all items from this repository that belongs to a specific repository root. * * @param root is the repository root containing the items to remove. */ void removeItemsFromRoot(IRepositoryRoot root); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy