Best way to populate an object

This is more of a coding convention question. I was wondering what is the best or industry standard way to populate an object.
If there's a method that returns an object is it better to pass an empty object (just declared) into the method, have the method populate the object and then just use the object
e.g. Object foo;
populateObject(foo);
foo.getProperty();
or
have the method return a newly populated object
e.g. Object foo = populateObject();
foo.getProperty();
thanks

It's better to pass in an object as an argument when performance is important. You can pass in the same object instead of creating new objects for each call to getProperty().
It's better to return a newly populated object when the caller does not know what class of object will be returned. The getProperty() method could return a subclass of Object.
As is often the case, the answer is: it depends.

Similar Messages

  • Best way to do a Object which holds a collection of another object type.

    I'm writing a caching object to store another object. The cache is only valid for a session, so I want a store the data in a nested table.
    I have try to simplify my example down to its core.
    How do I make this work and what is the best to index the index the items stored for fastest retrieval.
    CREATE OR REPLACE TYPE ty_item AS OBJECT (
    id_object VARCHAR2 (18),
    ORDER MEMBER FUNCTION compare (other ty_item)
    RETURN INTEGER
    CREATE OR REPLACE TYPE BODY ty_item
    AS
    ORDER MEMBER FUNCTION compare (other ty_item)
    RETURN INTEGER
    IS
    BEGIN
    IF SELF.id_object < other.id_object
    THEN
    RETURN -1;
    ELSIF SELF.id_object > other.id_object
    THEN
    RETURN 1;
    ELSE
    RETURN 0;
    END IF;
    END;
    END;
    CREATE OR REPLACE TYPE ty_item_store AS TABLE OF ty_item;
    CREATE OR REPLACE TYPE ty_item_holder AS OBJECT (
    CACHE ty_item_store,
    MEMBER FUNCTION get (p_id_object IN VARCHAR2)
    RETURN REF ty_item,
    MEMBER FUNCTION find (p_id_object IN VARCHAR2)
    RETURN REF ty_item,
    MEMBER FUNCTION ADD (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    CREATE OR REPLACE TYPE BODY ty_item_holder
    AS
    MEMBER FUNCTION get (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    IS
    rtn REF ty_item;
    BEGIN
    rtn := find (p_id_object);
    IF rtn IS NULL
    THEN
    rtn := ADD (p_id_object);
    END IF;
    RETURN rtn;
    END;
    MEMBER FUNCTION find (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    IS
    rtn ty_item;
    BEGIN
    SELECT VALUE (ch)
    INTO rtn
    FROM CACHE ch
    WHERE ch.id_object = p_id_object;
    RETURN rtn;
    END;
    MEMBER FUNCTION ADD (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    IS
    item ty_item;
    BEGIN
    item := ty_item (p_id_object);
    INSERT INTO CACHE
    VALUES (item);
    END;
    END;
    /

    Best way to do a Object which holds a collection of another object type. The best place for data in a database is.. no real surprise.. in tables. If that data is temporary of nature, global temporary tables cater for that.
    Storing/caching data using PL/SQL requires very expensive private process memory (PGA) from the server. This does not scale.
    I'm writing a caching object to store another object. Irrespective of how l33t your haxor skillz are, you will not be able to code as a sophisticated, performant and scalable PL/SQL data cache, as what already exists (as the database buffer cache) in Oracle.
    The cache is only valid for a session, so I want a store the data in a nested table.Not sure how you take one (session local data) to mean the other (oh, let's use a nested table).
    Session local data can be done using PL/SQL static variables. Can be done using name-value pairs residing in a context (Oracle namespace). Can be done using a global temporary table.
    The choice is dependent on the requirements that need to be addressed. However, the term +"caching+" has very specific connotations that say that a global temporary table is likely the best suited candidate.

  • Best way to populate fields ARF OR PL/SQL

    I'm building a form that requires data from two tables. The tables have a 1:1 relationship and share the same field as a primary key (I know they should be one table if normalized but unfortunately the tables have to be separate for various reasons).
    The fields from the first table are populated using an ARF process before header
    An ARP(DML) then handles the updating of the data.
    What I want to know is what is the best way to populate the data from the second table.
    Is it best to use a customPL/SQL process to populate the 10 fields ?
    Or can I use a second set of DML processes ? Can you actually use two ARF processes on the same page?
    Would really appreciate any advice.
    Thanks

    I find using VIEWS with 'INSTEAD OF' triggers very useful in this situation where you are dealing with more than one table. The view would just be the two tables joined and in the trigger you would write your own custom DML code to update the two tables.
    Then as far as APEX is concerned, it's just a standard form on a table / view.
    Hope this helps,
    Anthony.
    http://anthonyrayner.blogspot.com

  • Best way to make a object details page

    I have a dataTable, built with a sessionBean List. We have to make a link "show detail" in each row, and redirect to a new jsp showing selected row object details.
    Whats the best way to retrive the object selected?
    a commandLink with param (haschcode value) and search in list isn`t possible because is a sessionBean..
    I have some ideas but not with JSF....
    thanks

    1) Bind h:dataTable to an UIData property in main backing bean.
    2) Add a h:commandButton or h:commandLink to a column and bind it with an action method in main backing bean.
    3) In the main backing bean action method simply retrieve the row object byRowObject selectedRowObject = (RowObject) uiDataProperty.getRowData();and navigate to some display details page.
    4) In the display details page just access the data by #{mainManagedBean.selectedRowObject.someProperty} and so on.
    Detailed examples can be found here: [http://balusc.blogspot.com/2006/06/using-datatables.html].

  • Best way to MouseDrag multiple objects around a scene.

    So I am having a little trouble trying to drag 3 Box's in a scene.
    Originally I had it set up where each was relocated to an x,y translated Z and set to a HWD. Then I figured I would, instead of the mouse click on the box itself, be in the root. From there I would look through all of the root.getChildren() then made that see if it contained the x,y position.
    Then from knowing which of my root Children I clicked I did root.getChildren.get(current).setOnDragged to figure out which one was dragged.
    The code itself worked except for finding which box I was on.
    The issue I find is that I onyl have getX, getSceneX, and getScreenX. X, and SceneX produce the same value, and ScreenX is useless. I tried then to do event.getX() - root.getLayoutX() to make the contains function to work, but it wasn't working and would require me to change up more things. getLayoutX() was = 0 since I didn't set the root location, only the locations of the box's.
    From there I kept wondering if there was a better way. Then I thought maybe to loop through every element in my root or in an arrayList(Which is what I used, but realized the root.getchildren should work like the original) but the problem is it keeps only registering the last one in the list, so it just loops and that's it.
    So what I want to know is, what would be the best way to figure out what object I'm in?
    Originally I use the contains(Swing) but Swing is different, and now especially since we can register mouseEvents to each node, shouldn't we know exactly which one we are on, just by looping through each of them? I figure that's easier than having to check every single mouse position contained within, especially if I have 10000 things to check?
    Edited by: KonradZuse on Mar 18, 2013 8:05 PM

    I slightly modified your code for 3D.
    - added a pointlight
    - added a phong material
    - the rectangle changed to a box
    - the circle changed to a sphere
    - add scene.setCamera(new PerspectiveCamera(false));
    Without the last line it is not working.
    I tested it with javafx8.0 build 80 Netbean7.3
    import javafx.application.Application;
    import javafx.scene.Node;
    import javafx.scene.Scene;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.layout.Pane;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Circle;
    import javafx.scene.shape.Polygon;
    import javafx.scene.shape.Rectangle;
    import javafx.stage.Stage;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
    import javafx.scene.PerspectiveCamera;
    import javafx.scene.PointLight;
    import javafx.scene.paint.PhongMaterial;
    import javafx.scene.shape.Box;
    import javafx.scene.shape.DrawMode;
    import javafx.scene.shape.Sphere;
    public class DraggingShapes3D extends Application {
        @Override
        public void start(Stage primaryStage) {
            PointLight pointLight = new PointLight(Color.ANTIQUEWHITE);    
            pointLight.setTranslateX(800);    
            pointLight.setTranslateY(-100);  
            pointLight.setTranslateZ(-1000);
            PhongMaterial material = new PhongMaterial();
            material.setDiffuseColor(Color.LIGHTGRAY);
            material.setSpecularColor(Color.rgb(30, 30, 30));
            Box box = new Box(200, 200, 200);
            box.setMaterial(material);
            box.setTranslateX(100);
            box.setTranslateY(100);
            box.setDrawMode(DrawMode.FILL);
            box.addEventHandler(MouseEvent.ANY, new DragShapeHandler());
            Group root = new Group();
            Sphere sphere = new Sphere(100);
            sphere.setTranslateX(400);
            sphere.setTranslateY(100);
            sphere.setMaterial(material);
            sphere.addEventHandler(MouseEvent.ANY, new DragShapeHandler());
            root.getChildren().addAll(box, sphere);
             root.getChildren().addAll(pointLight);
            Scene scene = new Scene(root, 800, 800, true);
            scene.setCamera(new PerspectiveCamera(false));
            primaryStage.setScene(scene);
            primaryStage.show();
        public static void main(String[] args) {
            launch(args);
        class DragShapeHandler implements EventHandler<MouseEvent> {
            private double sceneAnchorX;
            private double sceneAnchorY;
            @Override
            public void handle(MouseEvent event) {
                if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {
                    sceneAnchorX = event.getSceneX();
                    sceneAnchorY = event.getSceneY();
                } else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
                    double x = event.getSceneX();
                    double y = event.getSceneY();
                    Node node = (Node) event.getSource();
                    node.setTranslateX(node.getTranslateX() + x - sceneAnchorX);
                    node.setTranslateY(node.getTranslateY() + y - sceneAnchorY);
                    sceneAnchorX = x;
                    sceneAnchorY = y;
    }

  • The best way to delete an object

    hi
    i'm searching for a while for the best method to delete an object
    for example let's say i have this object
    Mycar car = new Mycar("bmw");
    is this a correct way to delete it
    car=null;
    System.gc();

    J2ee_consultant wrote:
    i think that they are the same so what's the good solution to do that?You don't. In C++, for example, explicitly freeing objects is a major cause of runtime errors (double frees, or use of freed objects). In java you simply have to trust the garbage collector.

  • Best way to restore "deleted objects" container's ACLs?

    Hi,
    I haven noticed, when using the the LDP for reading the security description of "Deleted Objects" container that LDP returns to me "Error: Security: No Such Attribute <16>". Should it be readable or not? At least all other environments
    I can read it.
    And if it should be readable, then what is the best way to fix it? Take the ownership, and etc... If I take the ownership, then I assume some ACLs are reseted and installations like Exchange and Lync requires domain preparations, right?
    Petri

    > description of "Deleted Objects" container that LDP returns to me
    > "Error: Security: No Such Attribute <16>". Should it be readable or not?
    AFAIK, deleted objects lose their ACL.
    Martin
    Mal ein
    GUTES Buch über GPOs lesen?
    NO THEY ARE NOT EVIL, if you know what you are doing:
    Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))

  • What is the best way to get another object's method to update my GUI?

    package stuff;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.*;
    public class Test extends JFrame{
      private static JButton ProcessButton = new JButton();
      private static JLabel jLabel2 = new JLabel();
      public static void main( String args []){
         Test f = new Test();
         f.setSize(500,500);
         Container c = f.getContentPane();
         ProcessButton.addActionListener( new ActionListener(){
                                     public void actionPerformed(ActionEvent e) {
                                        jLabel2.setText("Connecting to DB");
                                        //Connection connection = Tools.setUpConnectionToDB(url,userName,pwd);
         c.add(ProcessButton, BorderLayout.NORTH);
         jLabel2.setText("My Label");
         c.add(jLabel2, BorderLayout.SOUTH);
         f.setVisible(true);
    {\code]
    The method setUpConnectionToDB can take 1 - 10 mins to complete. By this time a user will prob have quit my app thinking
    it's crashed because it doesn't update the GUI with a progress status. :(
    What is the best way to get this method to update the GUI of the app which calls it?
    Something like  Connection connection = Tools.setUpConnectionToDB(url,userName,pwd, this);
    ie this being a reference to the GUI's JFrame is what I'm trying to use?

    A handy class to know about but not really what I'm after.
    I need the method call
    Tools.setUpConnectionToDB(url,userName,pwd);
    to be able to update a component ( The JLabel ) on the GUI
    Connection connection = Tools.setUpConnectionToDB(url,userName,pwd, this);
    [\code]
    method defn:public static Connection setUpConnectionToDB( String url, String user, String pwd, JFrame f ){
    //Why doesn't this code below modify the GUI on the calling App?
    f.jLabel2.setText("Setting UP DB Connection");
    f.repaint();
    Connection c = null;
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    c = DriverManager.getConnection(url,user,pwd);
    catch(ClassNotFoundException e){
    JOptionPane.showMessageDialog(null , "Error loading DB driver");
    System.exit(0);
    catch(Exception e){
    JOptionPane.showMessageDialog(null , "Error connecting to DB, check config file");
    System.exit(0);
    return c;
    }[\code]

  • Best way to transform an object into a circle?

    Let's say I have a long rectangle I want to warp into a circle, what would be the best way to go about doing this?

    Drag the rectangle into the Brushes palette.
    In the resulting dialog, define an Art Brush.
    Draw a circle.
    Apply the Art Brush to the circle.
    JET

  • Best way to determine what objects has been selected in a Collection?

    Hi all
    I´m currently developing an application where a user can create a PDF based on the choices made from multiple collections.
    Each collection contatins 10-50 items, and there are about 8 different collections with objects.
    Checkboxes are used to select items from these collections.
    I´m wondering how I would best determine what choices have been made, and if would be good to remove all objects from
    a collection that has NOT been chosen?
    Currently, it looks like this (exemple for one collection, but same solution is used for all collections)
    private Collection<Texture> textureList = new ArrayList<Texture>();
    private ArrayList<Texture> textureResult = new ArrayList<Texture>();
              for (Texture t : textureList) {
                   if (t.isSelected()) {
                        textureResult.add(t);
              }After this iteration, textureResult is used to create the PDF.
    This PDF contains lists with dynamic frames, so I need to now how many
    items was selected before creating the PDF.
    Wondering if this is the best/most efficient way to do this though?
    Maybe it doesn´t matter all that much with lists this small, but I´m still curios :-)
    I guess you could do something like this aswell
              while (textureList.iterator().hasNext()) {
                   Texture t = (Texture) textureList.iterator().next();
                   if (!t.isSelected()) {
                        textureList.iterator().remove();
              }Any suggetions?

    Dallastower wrote:
    I´m wondering how I would best determine what choices have been made,Are you asking how to determine which boxes have been checked? Or do you know how to do that and you're asking how to associate those boxes with items in your Collections? Or do you know how to do that and you're asking how to keep track of those selected items in the Collection?
    I don't do GUIs, so I can't help with the first two, but for the third, you could create a new collection holding just the selected ones, or remove the unselected ones from the original Collection.
    and if would be good to remove all objects from
    a collection that has NOT been chosen?That's entirely up to you. If you create the original Collection when the user makes his selection, and only need it to survive one round of selection, that may be fine. But if you need to get back to the original collection later, and it's expensive to create, then you might want to just create a second collection and add items from the original to it if they're selected.

  • The best way to populate a secondary database

    I'm trying to create a secondary database over an existing primary database. I've looked over the GSG and Collections docs and haven't found an example that explicitly populates a secondary database.
    The one thing I did find was setAutoPopulate(true) on the SecondaryConfig.
    Is this the only way to get a secondary database populated from a primary? Or is there another way to achieve this?
    Thanks

    However, after primary and secondary are in sync,
    going forward, I'm unsure of the mechanics of how to
    automagically ensure that updates to primary db are
    reflected in secondary db. I'm sorry, I misunderstood your question earlier.
    Does JE take care of updating secondary db in such
    cases (provided both DBs are open)? In other words,
    if I have a Map open on the primary and do a put(), I
    can turn around and query the secondary (with apt
    key) and I should be able to retrieve the record I
    just put into the primary?Yes, JE maintains the secondaries automatically. The only requirement is that you always keep the secondary open while writing to the primary. JE uses your SecondaryKeyCreator implementation (you pass this object to SecondaryConfig.setKeyCreator when opening the secondary) to extract the secondary keys from the primary record, and automatically insert, update and delete records in the secondary databases as necessary.
    For the base API and collections API, JE does not persistently store the association between primaries and secondaries, so you must always open your secondary databases explicitly after opening your primary databases. For the DPL API (persist package), JE maintains the relationship persistently, so you don't have to always open the secondary indexes explicitly.
    I couldn't find an example illustrating this (nice)
    feature - hence the questions.For the collections API (I see you're using the collections API):
    http://www.oracle.com/technology/documentation/berkeley-db/je/collections/tutorial/UsingSecondaries.html
    In the examples directory:
    examples/collections/* -- all but the basic example use secondaries
    Mark

  • Best way to creat an OBJECT in OM

    Hi All,
    As i know there are multiple options available to create Objects for OM,
    Now what is the best possible way to create number of Objects in OM Out of the following.
    PPOCE
    PPOC_OLD,
    PP01,
    PO03,PO10,PO13
    Please guide.

    You need to understand 3 core things to have good understanding of OM..
    1) Objects
    2) Relationships
    3) Attributes
    Each element of your org. structure is an Object. It is related with another object and it has certain attributes..
    Org. Unit, Position and Person are different examples of objects each of which has its own attributes.. when you link them together it forms your org. strcture..
    To depict very basic structure, you can use "Simple Maintenance" option.
    You can use "Expert Mode" to define attributes of the objects..
    And to do both activities at one place, you can do so through "Org. & Staffing" interface..
    So organizational and Staffing interface is in detailed and coprehensive you may use it for better understandings.
    The following are the detail transaction you may use .
    AREA Mene     T-CODES     List of Activity
         PP70     SAP Easy Access Organizational Management
         PP7S     SAP Easy Access Organizational Management
    Organization and Staffing      T-CODES     List of Activity
         PPOCE      Create
         PPOME      Change
         PPOSE      Display
    General structures           
         PPSC     Create
         PPSM     Change
         PPSS     Display
    Matrix          
         PPME     Change
         PPMS     Display
    Expert mode           
         PO10     Organizational unit
         PO03     Job
         PO13     Position
         PO01     Work center
         PFCT     Task catalog
         PP01     General
    Simple maintenance           
         PPOC_OLD - Create      
         PPOM_OLD - Change      
         PPOS_OLD - Display      
    Regaards
    Barket Ali Zafar
    SAP HCM Consultant
    Siemens Pakistan
    +92-300-5521524

  • [10g] Best way to populate and update multiple workday calendars?

    I would like to create multiple workday calendars, and be able to update them as needed. Each workday calendar would be for at most 5 years (right now), although it is possible that at some point in the future, I might want to extend that.
    A workday calendar can apply to a single resource or a group of resources. Each individual is part of a resource group. What I'm thinking is that if an individual resource has an associated workday calendar, that calendar gets used, but if it doesn't, it uses the calendar of it's resource group, and if the group doesn't have one, the default calendar gets used. Theoretically, each resource could have its own workday calendar, and there would be probably 500 resources at most. In practice, many resources will have the same or similar workday calendars.
    Each calendar will be based on one of 3 standards: all calendars days are work days, all days but weekends are workdays, or all days except weekends and holidays are workdays. (Weeks start on Sunday, and Saturday and Sunday are weekends.) The standard calendar would then be modified to create each unique calendar as needed. For example, if a resource was an employee, their calendar might be the standard of not working weekends or holidays, but could also include a one week vacation in February and a one week vacation July. I'm not sure what the best approach is for defining a calendar in the first place and then being able to update it as an employee decides on vacations (or whatever other situation might affect workdays).
    Furthermore, I'd really like to be able to incorporate work hours, which could vary by day, though would likely be fairly standard. I don't know if this information belongs in the workday table, or as something separate to be combined with the workday table.
    My ultimate purpose in doing all of this is to try to schedule a very large project amongst many resources.
    Here is some sample data illustrating where I'm at so far:
    CREATE TABLE     work_groups
    (     group_id     VARCHAR2(5)     NOT NULL
    ,     group_name     VARCHAR2(25)     
    ,     group_desc     VARCHAR2(200)
    ,     CONSTRAINT     work_groups_pk     PRIMARY KEY (group_id)
    INSERT INTO     work_groups
    VALUES     ('A','Group A','Group A description');
    INSERT INTO     work_groups
    VALUES     ('B','Group B','Group B description');
    INSERT INTO     work_groups
    VALUES     ('C','Group C','Group C description');
    INSERT INTO     work_groups
    VALUES     ('D','Group D','Group D description');
    CREATE TABLE     resources
    (     resource_id     VARCHAR2(20)     NOT NULL
    ,     type          VARCHAR2(1)
    ,     description     VARCHAR2(200)
    ,     group_id     VARCHAR2(5)     
    ,     CONSTRAINT     resources_pk     PRIMARY KEY (resource_id)
    ,     CONSTRAINT     group_id_fk     FOREIGN KEY (group_id)
                             REFERENCES  work_groups (group_id)
    INSERT INTO     resources
    VALUES     ('A001','M','text here','A');
    INSERT INTO     resources
    VALUES     ('A002','M','text here','A');
    INSERT INTO     resources
    VALUES     ('A003','M','text here','A');
    INSERT INTO     resources
    VALUES     ('B001','M','text here','B');
    INSERT INTO     resources
    VALUES     ('B002','M','text here','B');
    INSERT INTO     resources
    VALUES     ('C001','M','text here','C');
    INSERT INTO     resources
    VALUES     ('C002','M','text here','C');
    INSERT INTO     resources
    VALUES     ('C003','M','text here','C');
    INSERT INTO     resources
    VALUES     ('D001','M','text here','D');
    INSERT INTO     resources
    VALUES     ('12345','L','text here','A');
    INSERT INTO     resources
    VALUES     ('12346','L','text here','A');
    INSERT INTO     resources
    VALUES     ('12347','L','text here','B');
    INSERT INTO     resources
    VALUES     ('12348','L','text here','B');
    INSERT INTO     resources
    VALUES     ('12349','L','text here','C');
    INSERT INTO     resources
    VALUES     ('12350','L','text here','C');
    INSERT INTO     resources
    VALUES     ('12351','L','text here','D');I'm not sure if I should have a separate table to define a relationship between a resource or resource group and a calendar id (each resource or group would only be able to be assigned 1 unique calendar id, though multiple resources/groups could share the same calendar id), or if I should add an extra column to each of the above tables to assign the calendar id.
    CREATE TABLE     calendars
    (     cal_id          NUMBER(4)     NOT NULL
    ,     cal_title     VARCHAR2(25)
    ,     cal_desc     VARCHAR2(200)
    ,     CONSTRAINT     calendars_pk     PRIMARY KEY (cal_id)
    INSERT INTO     calendars
    VALUES     (1,'Default','This is the default calendar to use for workdays');
    INSERT INTO     calendars
    VALUES     (2,'All Days','This calendar treats all days as workdays');
    INSERT INTO     calendars
    VALUES     (3,'Weekends Off','This calendar gives weekends off, but no holidays');
    INSERT INTO     calendars
    VALUES     (4,'Holidays Off','This calendar gives weekends and holidays off');
    CREATE TABLE     workdays
    (     cal_id          NUMBER(4)     NOT NULL
    ,     cal_date     DATE          NOT NULL
    ,     cal_year     NUMBER(4)
    ,     work_day     NUMBER(3)
    ,     work_date     DATE
    ,     work_week     NUMBER(2)
    ,     work_year     NUMBER(4)
    ,     work_days     NUMBER(5)
    ,     cal_days     NUMBER(6)
    ,     CONSTRAINT     workdays_pk     PRIMARY KEY (cal_id, cal_date)
    ,     CONSTRAINT     cal_id_fk     FOREIGN KEY (cal_id)
                             REFERENCES  calendars (cal_id)
    );cal_id     - refers to calendars table
    cal_date - the actual calendar date
    cal_year - the actual calendar year for the given calendar date
    work_day - workday in that work year (resets each year, starting at 1, is 0 if that calendar date is not a work day)
    work_date - if a work day, the calendar date, if not, the calendar date of the last work day (or in the first week of the calendar, the next work day)
    work_week - work week of the work date (numbered starting at 1 , reset each year at the first Sunday of the year, before first Sunday will have last week of previous year, and the first year of the calendar will have all days prior to Sunday included in the first week, so the first week of a calendar could be more than 7 days)
    work_year - year of the work date
    work_days - shop day of the work date (except in first week of the calendar, before first shop day is 0), starts at 1 (at the beginning of the calendar), cummulative (does not reset each year)
    cal_days - calendar day of the work date, starts at 1 (at the beginning of the calendar), cummulative (does not reset each year)
    Assuming the calendar starts on 1/1/2010 (these values are approximately correct--I just made my best guess to provide sample data):
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/01/2010','mm/dd/yyyy'),2010,0,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,0,1);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/02/2010','mm/dd/yyyy'),2010,0,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,0,2);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/03/2010','mm/dd/yyyy'),2010,0,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,0,3);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/04/2010','mm/dd/yyyy'),2010,1,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,1,4);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/05/2010','mm/dd/yyyy'),2010,2,TO_DATE('01/05/2010','mm/dd/yyyy'),1,2010,2,5);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('12/23/2010','mm/dd/yyyy'),2010,250,TO_DATE('12/23/2010','mm/dd/yyyy'),51,2010,250,357);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('12/24/2010','mm/dd/yyyy'),2010,0,TO_DATE('12/23/2010','mm/dd/yyyy'),51,2010,250,358);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/01/2011','mm/dd/yyyy'),2011,0,TO_DATE('12/23/2010','mm/dd/yyyy'),51,2010,250,366);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/02/2011','mm/dd/yyyy'),2011,0,TO_DATE('12/23/2010','mm/dd/yyyy'),1,2011,250,367);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/03/2011','mm/dd/yyyy'),2011,1,TO_DATE('01/03/2010','mm/dd/yyyy'),1,2011,251,368);I've tried googling workday calendars and similar things, but I can't seem to find anything that fits my situation. If anyone could even point me in the right direction, I'd appreciate it.
    I'm working in 10g (XE).
    Edited by: user11033437 on Jul 19, 2011 3:05 PM
    Also, I don't know if it would make more sense to just somehow store the days each resource/group doesn't work, and generate a workday calendar on the fly as needed, rather than trying to store possibly thousands of dates in the database??

    Hi,
    Interesting problem!
    I'm not sure exactly what you want, however. Are you looking for a way to answer questions such as "For resource A001, what are the first 6 work days on or after January 4, 2010?" or "How many work days does resource A001 have between January 4 and January 12, 2010?" Post a few examples of the questions you might ask, and the results you would want, given the sample data you posted.
    user11033437 wrote:
    I would like to create multiple workday calendars, and be able to update them as needed. Each workday calendar would be for at most 5 years (right now), although it is possible that at some point in the future, I might want to extend that.
    A workday calendar can apply to a single resource or a group of resources. Each individual is part of a resource group. Is a "resouce group" the same as a "work group"?
    if a resource moves from one resource group to another, do you need to keep track of the historical information? For example, if resource A001 does not havfe its own calendar, and is part of work_group A on Juanuary 1, 2010, but then moves to work_group B on July 1, 2010, will you need to answer questions like "How many work days did A001 have in 2010", where you have to remember that the work_group A calendar apllied during the first half of the year, but the work_group B calendar was in use for the second half?
    What I'm thinking is that if an individual resource has an associated workday calendar, that calendar gets used, but if it doesn't, it uses the calendar of it's resource group, and if the group doesn't have one, the default calendar gets used. Theoretically, each resource could have its own workday calendar, and there would be probably 500 resources at most. In practice, many resources will have the same or similar workday calendars.
    Each calendar will be based on one of 3 standards: all calendars days are work days, all days but weekends are workdays, or all days except weekends and holidays are workdays. (Weeks start on Sunday, and Saturday and Sunday are weekends.) The standard calendar would then be modified to create each unique calendar as needed. For example, if a resource was an employee, their calendar might be the standard of not working weekends or holidays, but could also include a one week vacation in February and a one week vacation July. I'm not sure what the best approach is for defining a calendar in the first place and then being able to update it as an employee decides on vacations (or whatever other situation might affect workdays).It seems like the simplest thing would be to record only the exceptions to the base calendar. That is, given that the employee normally abides by the "no weekends or holidays" schedule, just enter 5 rows for that particular employee to mark the 5 work days he'll miss in February. If the emplyoee is going to work Saturdays in June (in addition to his regular schedule), then enter one row for each Saturday in June.
    >
    Furthermore, I'd really like to be able to incorporate work hours, which could vary by day, though would likely be fairly standard. I don't know if this information belongs in the workday table, or as something separate to be combined with the workday table. That depends on exactly what you want. Post a couple opf examples of questions you would want to answer, and the actual answers, given the sample data you post.
    My ultimate purpose in doing all of this is to try to schedule a very large project amongst many resources.
    Here is some sample data illustrating where I'm at so far:
    CREATE TABLE     work_groups
    (     group_id     VARCHAR2(5)     NOT NULL
    ,     group_name     VARCHAR2(25)     
    ,     group_desc     VARCHAR2(200)
    ,     CONSTRAINT     work_groups_pk     PRIMARY KEY (group_id)
    INSERT INTO     work_groups
    VALUES     ('A','Group A','Group A description');
    INSERT INTO     work_groups
    VALUES     ('B','Group B','Group B description');
    INSERT INTO     work_groups
    VALUES     ('C','Group C','Group C description');
    INSERT INTO     work_groups
    VALUES     ('D','Group D','Group D description');
    CREATE TABLE     resources
    (     resource_id     VARCHAR2(20)     NOT NULL
    ,     type          VARCHAR2(1)
    ,     description     VARCHAR2(200)
    ,     group_id     VARCHAR2(5)     
    ,     CONSTRAINT     resources_pk     PRIMARY KEY (resource_id)
    ,     CONSTRAINT     group_id_fk     FOREIGN KEY (group_id)
                             REFERENCES  work_groups (group_id)
    INSERT INTO     resources
    VALUES     ('A001','M','text here','A');
    INSERT INTO     resources
    VALUES     ('A002','M','text here','A');
    INSERT INTO     resources
    VALUES     ('A003','M','text here','A');
    INSERT INTO     resources
    VALUES     ('B001','M','text here','B');
    INSERT INTO     resources
    VALUES     ('B002','M','text here','B');
    INSERT INTO     resources
    VALUES     ('C001','M','text here','C');
    INSERT INTO     resources
    VALUES     ('C002','M','text here','C');
    INSERT INTO     resources
    VALUES     ('C003','M','text here','C');
    INSERT INTO     resources
    VALUES     ('D001','M','text here','D');
    INSERT INTO     resources
    VALUES     ('12345','L','text here','A');
    INSERT INTO     resources
    VALUES     ('12346','L','text here','A');
    INSERT INTO     resources
    VALUES     ('12347','L','text here','B');
    INSERT INTO     resources
    VALUES     ('12348','L','text here','B');
    INSERT INTO     resources
    VALUES     ('12349','L','text here','C');
    INSERT INTO     resources
    VALUES     ('12350','L','text here','C');
    INSERT INTO     resources
    VALUES     ('12351','L','text here','D');
    It looks like all the rows have the same description. if description matters in this problem, wouldn't it be better to illustrate how it matters, by having different descrioptions that appeared in different outputs? On the other hand, if description doesn't play any role in this problem, then why include in the sample data at all?
    I'm not sure if I should have a separate table to define a relationship between a resource or resource group and a calendar id (each resource or group would only be able to be assigned 1 unique calendar id, though multiple resources/groups could share the same calendar id), or if I should add an extra column to each of the above tables to assign the calendar id.
    CREATE TABLE     calendars
    (     cal_id          NUMBER(4)     NOT NULL
    ,     cal_title     VARCHAR2(25)
    ,     cal_desc     VARCHAR2(200)
    ,     CONSTRAINT     calendars_pk     PRIMARY KEY (cal_id)
    INSERT INTO     calendars
    VALUES     (1,'Default','This is the default calendar to use for workdays');
    INSERT INTO     calendars
    VALUES     (2,'All Days','This calendar treats all days as workdays');
    INSERT INTO     calendars
    VALUES     (3,'Weekends Off','This calendar gives weekends off, but no holidays');
    INSERT INTO     calendars
    VALUES     (4,'Holidays Off','This calendar gives weekends and holidays off');
    What is is cal_id=1? How will it differ from the other three?
    CREATE TABLE     workdays
    (     cal_id          NUMBER(4)     NOT NULL
    ,     cal_date     DATE          NOT NULL
    ,     cal_year     NUMBER(4)
    ,     work_day     NUMBER(3)
    ,     work_date     DATE
    ,     work_week     NUMBER(2)
    ,     work_year     NUMBER(4)
    ,     work_days     NUMBER(5)
    ,     cal_days     NUMBER(6)
    ,     CONSTRAINT     workdays_pk     PRIMARY KEY (cal_id, cal_date)
    ,     CONSTRAINT     cal_id_fk     FOREIGN KEY (cal_id)
                             REFERENCES  calendars (cal_id)
    );I suspect there's a simpler way, especially if there's a regular order to day types (e.g., people who get holidays off normally get weekeneds, too).
    Perhaps you could have a table like this, that had one row per day:
    CREATE TABLE  days
    (       a_date      DATE     PRIMARY KEY
    ,     day_type    NUMBER (1)              -- 1=Weekend, 2=Holiday, 3=Other
    INSERT INTO days (a_date, day_type) VALUES (DATE '2010-01-01', 2) /* New Years Day */;
    INSERT INTO days (a_date, day_type) VALUES (DATE '2010-01-02', 1) /* Saturday */;
    INSERT INTO days (a_date, day_type) VALUES (DATE '2010-01-03', 1) /* Sunday */;
    INSERT INTO days (a_date, day_type) VALUES (DATE '2010-01-04', 3) /* Monday - back to work */;
    ...Another table (I'll call it work_sched) shows what resources work when:
    CREATE TABLE  work_sched
    (       p_key          NUMEBR     PRIMARY KEY     -- Arbitrary Unique ID
    ,     group_id         VARCHAR2 (5)          -- Exactly one of the columns group_id or ...
    ,     resource_id      VARCHAR2 (20)          --     ... resource_id will always be NULL
    ,     a_date              DATE
    ,     works_on     NUMBER (1)          -- works when days.day_type >= this value
    ,     remarks          VARCHAR2 (40)
    );To indicate that work_group 'L' normally works on type 3 days only (that is, weekends or holidays):
    INSERT INTO work_sched (group_id, a_date, works_on) VALUES ('L', NULL, 3);(Let's assume that p_key is populated by a trigger.)
    The NULL in the a_date column indicates that this applies to all days, unless overridden by another row in the work_sched table. Instead of NULL, mabe some impossible date (such as Jan. 1, 1900) would be more convenient to indicate defaults.
    Exceptions to this schedule would be indicated by other rows in work_sched. For example, if '12345' is the employee who's on vacation for a week in February:
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-02-08', 4, 'Vacation');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-02-09', 4, 'Vacation');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-02-10', 4, 'Vacation');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-02-11', 4, 'Vacation');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-02-12', 4, 'Vacation');And if that same employee works Satudays in June:
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-06-05', 1, 'Fiscal year-end crunch');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-06-12', 1, 'Fiscal year-end crunch');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-06-19', 1, 'Fiscal year-end crunch');
    INSERT INTO work_sched (resource_id, a_date, works_on, remarks) VALUES ('12345', DATE '2010-06-26', 1, 'Fiscal year-end crunch');When finding the number of work days, we would join work_sched to days using both conditions:
    ON   work_sched.date           = days.a_date
    AND  work_sched.works_on  <= days.day_type
    cal_id     - refers to calendars table
    cal_date - the actual calendar date
    cal_year - the actual calendar year for the given calendar date
    work_day - workday in that work year (resets each year, starting at 1, is 0 if that calendar date is not a work day)
    work_date - if a work day, the calendar date, if not, the calendar date of the last work day (or in the first week of the calendar, the next work day)
    work_week - work week of the work date (numbered starting at 1 , reset each year at the first Sunday of the year, before first Sunday will have last week of previous year, and the first year of the calendar will have all days prior to Sunday included in the first week, so the first week of a calendar could be more than 7 days)
    work_year - year of the work date
    work_days - shop day of the work date (except in first week of the calendar, before first shop day is 0), starts at 1 (at the beginning of the calendar), cummulative (does not reset each year)
    cal_days - calendar day of the work date, starts at 1 (at the beginning of the calendar), cummulative (does not reset each year)This is a lot of denormalized data. that is, you should be able to easily deduce cal_year from cal_date, but sometimes it is convenient to store denormalized data.
    Assuming the calendar starts on 1/1/2010 (these values are approximately correct--I just made my best guess to provide sample data):
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/01/2010','mm/dd/yyyy'),2010,0,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,0,1);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/02/2010','mm/dd/yyyy'),2010,0,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,0,2);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/03/2010','mm/dd/yyyy'),2010,0,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,0,3);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/04/2010','mm/dd/yyyy'),2010,1,TO_DATE('01/04/2010','mm/dd/yyyy'),1,2010,1,4);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/05/2010','mm/dd/yyyy'),2010,2,TO_DATE('01/05/2010','mm/dd/yyyy'),1,2010,2,5);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('12/23/2010','mm/dd/yyyy'),2010,250,TO_DATE('12/23/2010','mm/dd/yyyy'),51,2010,250,357);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('12/24/2010','mm/dd/yyyy'),2010,0,TO_DATE('12/23/2010','mm/dd/yyyy'),51,2010,250,358);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/01/2011','mm/dd/yyyy'),2011,0,TO_DATE('12/23/2010','mm/dd/yyyy'),51,2010,250,366);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/02/2011','mm/dd/yyyy'),2011,0,TO_DATE('12/23/2010','mm/dd/yyyy'),1,2011,250,367);
    INSERT INTO     workdays
    VALUES     (3, TO_DATE('01/03/2011','mm/dd/yyyy'),2011,1,TO_DATE('01/03/2010','mm/dd/yyyy'),1,2011,251,368);I've tried googling workday calendars and similar things, but I can't seem to find anything that fits my situation. If anyone could even point me in the right direction, I'd appreciate it.
    I'm working in 10g (XE).
    Edited by: user11033437 on Jul 19, 2011 3:05 PM
    Also, I don't know if it would make more sense to just somehow store the days each resource/group doesn't work, and generate a workday calendar on the fly as needed, rather than trying to store possibly thousands of dates in the database??That's what I was thinking, too.
    Post some sample data (if it's not what you've already posted), a couple of sample questions, and the exact answers you want from each question given that sample data.

  • Best way to import all objects into work repository located on a new master respository

    Hi,
    We have two separate master repositories, one for all development work repositories (Development, ST, UAT, IAT), and one for Production.
    What would be the best approach to export and import all objects from the Dev Repository into the Prod Work Repository located on the Prod Master Repository.
    Internal Ids of all work repositories are different.
    We have tried putting everything into a solution and exporting that, but that did not work when we tried to import it.
    We successfully exported and imported a single scenario, however this is not very practical as we have over 500 scenarios.
    All suggestions welcome,
    Thanks,
    Nic

    Thanks,
    But we want to keep Dev Work Repositories separate to Prod Work Repositories on their respective Master Repositories.
    So our end result will have:
    1) All Development Work Repositories located in the Development Master Repository on the Development server.
    2) The Production Work Repository located on the Production Master Repository on the Production Server.
    3) The ability to update a Solution or similar in Development with all changes to any objects.
    4) The ability to import the Solution into the Prod Work Repo on the Prod Master Repo and execute via a load plan.
    Is this possible?

  • Best way to add new objects to a Group?

    I have been trying to figure out how to keep things organized in the timeline. Which is very important when you get very complicated.  If I pick a group and then an obj and hit the group tool,  it makes a new group instead of just having it added to the original.  The only work around I have found is to ungroup the first group and then everything is nested in the new group.  That is a pain.......I would love to just select an object with my middle mouse, just drag it into a group in the timeline.  Or is there an easier way?
    Don

    I have been trying to figure out how to keep things organized in the timeline. Which is very important when you get very complicated.  If I pick a group and then an obj and hit the group tool,  it makes a new group instead of just having it added to the original.  The only work around I have found is to ungroup the first group and then everything is nested in the new group.  That is a pain.......I would love to just select an object with my middle mouse, just drag it into a group in the timeline.  Or is there an easier way?
    Don

Maybe you are looking for

  • Office 2013 outlook (not responding) opening attachments over a WAN link

    Before I get to the question I'll give you some info about our arcitecture. We have 7 remote sites each with 5mb connections. 5-10 computer at each site We are running exchange 2010 centrally from one server on a 20mb connection. All clients are runn

  • Macbook Pro hard drive failing, how to recover data?

    My 2 year old MBP refused to boot up this morning. I was told at the Genius Bar that the hard drive is on its way out.  It is still able to mount when hooked up to another machine but apparently the geniuses don't do data recovery.  I was refferred t

  • Initial load with CDC

    I am now able to replicate changes made on the source table and make the changes visible on the staging site, now I have two questions: 1.) how do I manage the initial load of the source table. The table as object gets replicated as an empty table, a

  • FICA- Payment advice and FPY1

    Hi, How payment advice in FICA  can be configured and form can be customized ? Is it possible to  create an idoc with FPY1 for transferring data from one environment to other. Regards, Saeed

  • Constant wi-fi interruption, "resolving host"

    Especially since the upgrade to Mavericks, an ongoing wi-fi connection is lost and the "resolving host" message appears when I attempt to refresh the page. I am still connected to my wi-fi but unable to upload/download any pages. It appears that this