@@ -0,0 +1,3231 @@
+package org.gnode.nix.base;%0A%0Aimport org.bytedeco.javacpp.annotation.Platform;%0Aimport org.gnode.nix.Source;%0A%0Aimport java.util.List;%0A%0A@Platform(value = %22linux%22)%0Apublic abstract class EntityWithSources extends EntityWithMetadata %7B%0A%0A    /**%0A     * Get the number of sources associated with this entity.%0A     *%0A     * @return The number sources.%0A     */%0A    abstract public long getSourceCount();%0A%0A    /**%0A     * Checks if a specific source is associated with this entity.%0A     *%0A     * @param id The source id to check.%0A     * @return True if the source is associated with this entity, false otherwise.%0A     */%0A    abstract public boolean hasSource(String id);%0A%0A    /**%0A     * Checks if a specific source is associated with this entity.%0A     *%0A     * @param source The source to check.%0A     * @return True if the source is associated with this entity, false otherwise.%0A     */%0A    abstract public boolean hasSource(Source source);%0A%0A    /**%0A     * Returns an associated source identified by its id.%0A     *%0A     * @param id The id of the associated source.%0A     */%0A    abstract public Source getSource(String id);%0A%0A    /**%0A     * Retrieves an associated source identified by its index.%0A     *%0A     * @param index The index of the associated source.%0A     * @return The source with the given id. If it doesn't exist an exception%0A     * will be thrown.%0A     */%0A    abstract public Source getSource(long index);%0A%0A    /**%0A     * Get all sources associated with this entity.%0A     *%0A     * @return All associated sources that match the given filter as a vector%0A     */%0A    abstract public List%3CSource%3E getSources();%0A%0A    /**%0A     * Set all sources associations for this entity.%0A     * %3Cp/%3E%0A     * All previously existing associations will be overwritten.%0A     *%0A     * @param sources A vector with all sources.%0A     */%0A    abstract public void setSources(List%3CSource%3E sources);%0A%0A    /**%0A     * Associate a new source with the entity.%0A     * %3Cp/%3E%0A     * If a source with the given id already is associated with the%0A     * entity, the call will have no effect.%0A     *%0A     * @param id The id of the source.%0A     */%0A    abstract public void addSource(String id);%0A%0A    /**%0A     * Associate a new source with the entity.%0A     * %3Cp/%3E%0A     * Calling this method will have no effect if the source is already associated to this entity.%0A     *%0A     * @param source The source to add.%0A     */%0A    abstract public void addSource(Source source);%0A%0A    /**%0A     * Remove a source from the list of associated sources.%0A     * %3Cp/%3E%0A     * This method just removes the association between the entity and the source.%0A     * The source itself will not be deleted from the file.%0A     *%0A     * @param id The id of the source to remove.%0A     * @return True if the source was removed, false otherwise.%0A     */%0A    abstract public boolean removeSource(String id);%0A%0A    /**%0A     * Remove a source from the list of associated sources.%0A     * %3Cp/%3E%0A     * This method just removes the association between the entity and the source.%0A     * The source itself will not be deleted from the file.%0A     *%0A     * @param source The source to remove.%0A     * @return True if the source was removed, false otherwise.%0A     */%0A    abstract public boolean removeSource(Source source);%0A%0A%7D%0A

add base class EntityWithSources