Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
import hep.aida.IPlotterStyle;

/**
 * This interface can be implemented as "In-Memory" copy of persistent
 * facility, or as keeping live connections and committing any change
 * immediately.
 */

public interface IStyleStore {
   
    String getStoreName();
   
    String getStoreType();
   
    boolean isReadOnly();
   
   
    // Manage Styles

    void addStyle(String styleName, IPlotterStyle style);
   
    boolean hasStyle(String styleName);
   
    IPlotterStyle getStyle(String styleName);
   
    /**
     * Remove Style and all Rules associated with it from the Store
     */
    IPlotterStyle removeStyle(String styleName);
   
    String[] getAllStyleNames();
   

    // Create new Rules for this Store - Storeor should actswe ashave Rule FactoryStore-specific RuleFactory?

    IStyleRule createRule(int ruleType);

    IStyleRule createRuleFromDescription(String description);


    // Manage Rules

    IStyleRule[] getRulesForStyle(String styleName);
   
    void addRuleForStyle(String styleName, IStyleRule rule);
   
    void setRuleForStyle(String styleName, IStyleRule rule);
   
    void removeRuleForStyle(String styleName, IStyleRule rule);
   
    void removeAllRulesForStyle(String styleName);
   
    /**
     * Write all information from Store to the undelying persistent
     * facility: XML file, database, etc.
     */
    void commit();
          
    /**
     * Close all connections and free all resources.
     * Store is not usable after this method is executed.
     */
    void close();
          
}

...

Code Block
public interface IStyleRule {

     // Possible types of Style Rules
     static int CLASS     = 0; // Class of the object: hep.aida.IHistogram1D
     static int PATH      = 1; // Position of the object in a Tree
     static int ORDER     = 2; // Order in the IPlotterRegion: specific number, or cyclical
     static int ATTRIBUTE = 3; // Arbitrary "key=value" pair, evalyated by the Rule
                               // From AIDA object's annotation any entry with "plotterState." prefix in key
                               // will be stripped of this prefix and put into PlotterState with ATTRIBUTE
                               // type before obtaining Style from the StyleRegistry
     static int ACTION    = 4; // What is going to happen with the object: plotting, printing
     static int CATEGORY  = 5; // "experiment=GLAST", "quality=preliminary"
                               // ACTION seems like a sub-type of CATEGORY: "printing=true"

     int getType();

     /**
      * Priority determines the order in which corresponding IPlotterStyle
      * should be used when assembling the cumulative IPlotterStyle
      */
      int getPriority();

     // Should have some conventions for describing Rules (XML-based ?)
     String getDescription();

     // Evaluates the Rule, including all added Rules
     boolean ruleApplies(IPlotterState state);

}


public interface IComplexStyleRule extends IStyleRule {

    // Operations that chain rules together
     static int OR  = 0;
     static int AND = 1;
 

     // Manage Rule Chaining

     void addRule(IStyleRule rule, int operation);

     int getNRules();

     int getRuleOperation(int n);

     IStyleRule getRule(int n);

     void removeRule(int n);
}

...