RH10 Parent/Child Directory Structure

I know that you cannot embed a child project within a child project. When the parent displays in the browser, Child Project 1 is on the TOC, but Child Project 2 simply isn't in the Child Project 1 book.
Now I have a situation where I am trying to restructure my help system to display child projects in multiple different ways for different audiences. We've already had the discussion about why I don't combine 40,000 topics, video files and PDFs into one project and use categories to sort them - the project is too big. Robohelp only handles 2 gigs of files in one project before it crashes. So that is not an option.
What I did was create multiple parent projects, and publish each child project to multiple destinations using multiple single source layouts. Each parent displays only the child projects that audience needs to see. That part works fine.
However, now I have a problem on the server that reminds me of embedding child projects into child projects, and I'm wondering if I can even do this.
A parent project apparently needs to be on the root of the server, or its child projects don't display. In other words, you CANNOT put a parent project into a folder. That means you cannot separate the parents from one another because they all need to be in the same location. So, you cannot have multiple parent projects on one server - you actually need a separate server for each one.
Am I correct about this? That's what I found out when I tested the scenario. I just want to verify this with someone before I send my progress report.
Thanks

Thanks but he only covers the design aspect that I already have up and running - I've already created the multiple parents and generated multiple outputs for the various child projects. Phil says he has different "output folders" but these would have to be on the C:\ drive - that part works.
The rest of what he describes is what I'd envisioned for the project structure, but in actual fact it doesn't work. The instant I publish a parent project into a folder on the webserver, one level down from the directory root, the child projects do not display on the Table of Contents. They only display at folder Level 2, never at Level 3 , which is where they would be if you embed a child project into another child project - Parent Level 1> Child Level 2 > Child Level 3 - or Level 4, which is where they are in a mergedProjects folder.
Let's call the webserver "S". Your published output must be to S:\ - the "root," or "Level 1" -with your start file as S:\index.htm and the project files at that same level (except for a few folders, like SSL).
If you publish to S:\Parent1\index.htm, and publish all its child projects to S:\Parent1\mergedProjects\Child1\index.htm, the child project files are at Level 4 and don't display. Only the parent displays, without any children ot its Table of Contents.
My problem is that child projects don't display on the server because the parents apparently all need to be published to the root directory - Level 1. Phil doesn't say how he managed this. If he actually did this successfully, I'd be interested in knowing how because I'm out of ideas.
If I publish all parents to the same directory root, only the first one in alphabetical order displays, and the rest of the parents are lost. So it appears that you need multiple servers with multiple roots to pull this off.
My question is : Do parent projects HAVE to be at the root of the webserver directory structure in order to display child projects? My testing says "Yes." I'm just looking for someone to confirm that Robohelp isn't coded for the design Phil and I had envisioned so I can go to the executive team with that information.
Or, if Phil actually successfully did this, can he please tell us how? What were his target paths to the webserver, and how did he structure the folders and output on that webserver?

Similar Messages

  • Unable to resolve stale data error in parent-child page structure.

    Hi Experts!
    I've got a master-detail page which consists of two VOs(EO based), Lets say
    1. MasterTableVO
    2. DetailTableVO
    This page contains two page buttons "Cancel" and "Apply" till here it works all fine & perfect[by that i mean creating, retrieving, querying etc etc.]
    But now i've created another page which is actually a child page of the above mentioned one.
    Here the user'll enter to view some default configured financial info or may also update the default settings manually.
    In this page, I've got only an advancedTable based on a VO(EO based), lets say
    3. PaymentsTableVO
    This page has only one page button "Ok" and which returns back to the parent page retaining the AM.
    All the three VOs are in the same AM. Functionally untill here also it looks fine, but when i finally apply the data it throws an error on getTransaction().commit();
    Error stack:
    OAF Error Unable to perform transaction on the record.
    Cause: The record contains stale data. The record has been modified by another user.
    Action: Cancel the transaction and re-query the record to get the new data.
    Plz reply ASAP.
    Regards
    Ari

    Hi Sushant,
    Yepp !! I've done this in the AM. After invoking the method from the PGCO.
    Here's the code of the PGCO:
    /*===========================================================================+
    | Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA |
    | All rights reserved. |
    +===========================================================================+
    | HISTORY |
    +===========================================================================*/
    package AmritTransportation.oracle.apps.po.Transportations.webui;
    import java.io.Serializable;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.webui.OADialogPage;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import oracle.apps.fnd.framework.webui.TransactionUnitHelper;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
    * Controller for ...
    public class CostAllocationsPGCO extends OAControllerImpl
    public static final String RCS_ID="$Header$";
    public static final boolean RCS_ID_RECORDED =
    VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
    * Layout and page setup logic for a region.
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    if (!pageContext.isBackNavigationFired(false)) {
    TransactionUnitHelper.startTransactionUnit(pageContext,"CreateTxnCosts");
    if (!pageContext.isFormSubmission()) {
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    OAMessageTextInputBean Amount = (OAMessageTextInputBean)webBean.findIndexedChildRecursive("Amount");
    String TransportationNum = (String)pageContext.getParameter("pTransportationNum")
    ,TransportationId = (String)pageContext.getParameter("pTransportationId")
    ,LockedFlag = (String)pageContext.getParameter("pLockedFlag")
    ,OrgId = (String)pageContext.getProfile("ORG_ID");
    Serializable[] param = {OrgId,TransportationId};
    if (LockedFlag.equals("N")) {
    am.invokeMethod("DefineDefaultCosts",param);
    else {
    am.invokeMethod("executeCosts",param);
    Amount.setReadOnly(true);
    else {
    if (!TransactionUnitHelper.isTransactionUnitInProgress(pageContext,"CreateTxnCosts",true)) {
    OADialogPage dialogPage = new OADialogPage(NAVIGATION_ERROR);
    pageContext.redirectToDialogPage(dialogPage);
    * Procedure to handle form submissions for form elements in
    * a region.
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processFormRequest(pageContext, webBean);
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    if (pageContext.getParameter("Ok") != null) {
    TransactionUnitHelper.endTransactionUnit(pageContext,"CreateTxnCosts");
    pageContext.forwardImmediately("OA.jsp?page=/AmritTransportation/oracle/apps/po/Transportations/webui/CreateTransportationPG&isChildPage=1"
    ,null
    ,OAWebBeanConstants.KEEP_MENU_CONTEXT
    ,null
    ,null
    ,true
    ,OAWebBeanConstants.ADD_BREAD_CRUMB_YES);
    ===============================================================
    Here's the AM method DefineDefaultCosts:
    ===============================================================
    /**Custom public method to define default cost
    * allocation based on the pre-defined formula
    * for cost allocation keeping parity with the
    * corresponding delivery freight details
    public void DefineDefaultCosts(String StrOrgId,String StrTransportationId) {
    OAViewObject vo = (OAViewObject)getAmritTransportationCreateVO1()
    ,vo1 = (OAViewObject)getAmritTransportationPaymentsVO1()
    ,vo2 = (OAViewObject)getAmritTransportDeliveryLinesVO1();
    OADBTransaction txn = getOADBTransaction();
    ArrayList debugMessage = new ArrayList();
    HashMap PartySet = new HashMap();
    Boolean PartyEntryValid = null;
    String TransportationNum = (String)vo.getCurrentRow().getAttribute("TransportationNum")
    ,CurrencyCode = (String)vo.getCurrentRow().getAttribute("CurrencyCode")
    ,EventType = "TRNSP DELIVERED",PeriodName = null;
    Date AccountingDate = (Date)vo.getCurrentRow().getAttribute("DateDelivered");
    Number Amount = (Number)vo.getCurrentRow().getAttribute("Amount")
    ,Rate = (Number)vo.getCurrentRow().getAttribute("Rate")
    ,TripId = (Number)vo.getCurrentRow().getAttribute("TripId")
    ,OrgId = null,TransportationId = null,CodeCombinationId = new Number(576773);
    int DlvryRowCount = vo2.getRowCount(),CostDistRowCount = vo1.getRowCount();
    if (CostDistRowCount == 0) {
    try {
    OrgId = new Number(StrOrgId);
    TransportationId = new Number(StrTransportationId);
    }catch (Exception e) {}
    //debugMessage.add(new OAException("Inherited Values: "+TransportationId+" "+TransportationNum+" "+CurrencyCode+" "+EventType+" "+AccountingDate+" "+Amount+" "+Rate+" "+OrgId));
    try {
    Connection Conn = txn.getJdbcConnection();
    String v$Script = "Select gp.period_name period\n" +
    "From gl_periods gp\n" +
    "Where upper(gp.period_set_name) = 'AMRIT_CALENDAR'\n" +
    "And gp.adjustment_period_flag = 'N'\n" +
    "And trunc(:1) between nvl(gp.start_date,trunc(sysdate))\n" +
    " and nvl(gp.end_date,trunc(sysdate))\n";
    PreparedStatement PreExecuteQuery = Conn.prepareStatement(v$Script);
    PreExecuteQuery.setDate(1,new java.sql.Date(AccountingDate.dateValue().getTime()));
    for (ResultSet QryOutputRS = PreExecuteQuery.executeQuery();QryOutputRS.next();) {
    PeriodName = QryOutputRS.getString("period");
    v$Script = "Select attl.vendor_id vendorid\n" +
    " ,asp.vendor_name vendor \n" +
    "From apps.amrit_transport_trips att\n" +
    " ,apps.amrit_transport_trip_lines attl\n" +
    " ,ap.ap_suppliers asp\n" +
    "Where att.org_id = :1\n" +
    "And att.trip_id = :2\n" +
    "And att.enabled_flag = 'Y'\n" +
    "And trunc(sysdate) between nvl(att.start_date_active,trunc(sysdate))\n" +
    " and nvl(att.end_date_active,trunc(sysdate))\n" +
    "And attl.org_id = att.org_id\n" +
    "And attl.trip_id = att.trip_id\n" +
    "And attl.enabled_flag = 'Y'\n" +
    "And trunc(sysdate) between nvl(attl.start_date_active,trunc(sysdate))\n" +
    " and nvl(attl.end_date_active,trunc(sysdate))\n" +
    "And attl.location_type = 'HZ'\n" +
    "And asp.enabled_flag = 'Y'\n" +
    "And asp.vendor_id = attl.vendor_id\n" +
    "And trunc(sysdate) between nvl(asp.start_date_active,trunc(sysdate))\n" +
    " and nvl(asp.end_date_active,trunc(sysdate))\n";
    PreExecuteQuery = Conn.prepareStatement(v$Script);
    PreExecuteQuery.setInt(1,Integer.parseInt(OrgId.toString()));
    PreExecuteQuery.setInt(2,Integer.parseInt(TripId.toString()));
    for (ResultSet QryOutputRS = PreExecuteQuery.executeQuery();QryOutputRS.next();) {
    PartySet.put(QryOutputRS.getString("vendorid"),QryOutputRS.getString("vendor"));
    }catch (Exception e) {}
    /* vo2.first();
    for (int i = 1;i <= DlvryRowCount;i++) {
    if (vo2.getCurrentRow().getAttribute("CancelFlag").equals("N")) {
    PartyEntryValid = PartySet.add((Number)vo2.getCurrentRow().getAttribute("VendorId"));
    //debugMessage.add(new OAException("Set VendorId: "+vo2.getCurrentRow().getAttribute("VendorId")));
    vo2.next();
    //debugMessage.add(new OAException("PartySet: "+PartySet.entrySet()));
    for (Iterator iter = PartySet.entrySet().iterator();iter.hasNext();) {
    Map.Entry entry = (Map.Entry)iter.next();
    String VendorName = (String)entry.getValue();
    Number Cost = null;
    int PartyId = Integer.parseInt(entry.getKey().toString());
    float Qty = 0;
    try {
    vo2.first();
    for (int i = 1;i <= DlvryRowCount;i++) {
    //debugMessage.add(new OAException("VO VendorId: "+vo2.getCurrentRow().getAttribute("VendorId")+" Cancelled: "+vo2.getCurrentRow().getAttribute("CancelFlag")));
    if (vo2.getCurrentRow().getAttribute("CancelFlag").equals("N")) {
    int VendorId = Integer.parseInt(vo2.getCurrentRow().getAttribute("VendorId").toString());
    float Quantity = Integer.parseInt(vo2.getCurrentRow().getAttribute("Quantity").toString());
    if (PartyId == VendorId) {
    Qty+= Quantity;
    //debugMessage.add(new OAException("Quantities: "+Quantity+" "+Qty));
    vo2.next();
    Qty*= Float.parseFloat(Rate.toString());
    Float totalQty = new Float(Qty);
    Cost = new Number(totalQty);
    }catch (Exception e) {}
    //debugMessage.add(new OAException("PartyId: "+PartyId+" VendorName: "+VendorName+" Cost: "+Cost+" EntryKey: "+entry.getKey()+" EntryValue: "+entry.getValue()));
    Row row = vo1.createRow();
    row.setAttribute("OrgId",OrgId);
    row.setAttribute("TransportationId",TransportationId);
    row.setAttribute("TransportationNum",TransportationNum);
    row.setAttribute("EventType",EventType);
    row.setAttribute("AccountingDate",AccountingDate);
    row.setAttribute("PeriodName",PeriodName);
    row.setAttribute("CodeCombinationId",CodeCombinationId);
    row.setAttribute("PartyId",PartyId);
    row.setAttribute("VendorName",VendorName);
    row.setAttribute("CurrencyCode",CurrencyCode);
    row.setAttribute("Amount",Cost);
    row.setAttribute("TransportationAmount",Amount);
    vo1.last();
    vo1.next();
    vo1.insertRow(row);
    row.setNewRowState(Row.STATUS_INITIALIZED);
    vo1.first();
    vo2.first();
    OAException.raiseBundledOAException(debugMessage);
    ===============================================================
    Here's the AM method executeCosts:
    ===============================================================
    /**Custom public method to execute the corresponding
    * transportation transactional cost allocations
    * and the distributive charges on the vendor accounts
    public void executeCosts(String StrOrgId,String StrTransportationId) {
    OAViewObject vo = (OAViewObject)getAmritTransportationPaymentsVO1();
    Number TransportationId = null;
    try { TransportationId = new Number(StrTransportationId); }catch (Exception e) {}
    if (!vo.isPreparedForExecution()) {
    if (TransportationId != null) {
    vo.setNamedWhereClauseParam("ReferredTransportationId",TransportationId);
    vo.executeQuery();
    ===============================================================
    Plz mention if something else is also required.
    Regards
    Ari :)

  • User Folders in a Parent / Child Domain Structure

    Hi,
    I have a forest setup with a parent and 3 child domains.
    We have a DFS share setup for home folders.
    I used Group Policy to create the User's share folders, map the drive, and setup folder redirection.
    Each user has a separate ID for each domain.
    The desire is for each user to be able to use the same \\parent.com\home\%logonuser% share path from each domain in order to access files from any domain, and have privacy from other users doing so.
    The problem I have is, after "child1\JohnD" signs into a workstation on domain CHILD1.com, his folder is created at "\\parent.com\home\JohnD" and mapped.
    But if child2\JohnD then signs into domain CHILD2.com, he does not have permissions to map the drive.
    I realize why, but I'm wondering if anyone can think of a way to change this setup so that parent\JohnD, and child1\2\3\JohnD, all have rights to map and use the same Home Folder.
    Having domain specific home folders has been shot down.
    Giving all shares EVERYONE access has been shot down.
    Open to other suggestions.
    Thanks!
    -Matt
    There's no place like 127.0.0.1

    You might want to try creating a script that will grant the required rights to both user accounts using Powershell: http://blogs.technet.com/b/heyscriptingguy/archive/2014/11/22/weekend-scripter-use-powershell-to-get-add-and-remove-ntfs-permissions.aspx
    Once you create the script, you can schedule it using Task Scheduler.
    This posting is provided AS IS with no warranties or guarantees , and confers no rights.
    Ahmed MALEK
    My Website Link
    My Linkedin Profile
    My MVP Profile
    Interesting.  I've been playing with this module off and on today.  From what I can tell, this would have to be scripted to some sort of function like this:
    dir \\parent.com\dfshome | Get-NTFSAccess
    For each dir in "\\parent.com\dfshome", set $folder
    For each $folder where account = "childx\User", set $User
    For each $User, Add-NTFSAccess: child1\$user, child2\$user, and child3\$user
    (head scratch)
    I'll give it some more thought. :)
    Thanks!
    There's no place like 127.0.0.1

  • Graphs and parent-child with loops and duplicates

    There is a parent-child relation in the table t(prnt, chld) which allows duplicates (A->B, A->B) and opposite paths (A->B, B->A), and complicated loops. Is there a way to identify rows that form any separate "connections network" and assign a "name" to them of any kind (letter, number, wahtever)? I try to use WITH recursive clause to identify and group rows belonging to one graph but with no luck. Any help would be appreciated.
    thank you

    Frank, I posted inputs for all graphs (multiple inserts) and some allowable outputs for one graph. For all cases (ie. graphs) the rule is the same:
    1. identify all nodes belonging to a graph
    2. "name" that graph (min, max or whatever you like)
    3. print the output in the form (node_belonging_to_a_graph, name_of_the_graph) for all identified graphs
    And as you said, I am somewhat flexible. I don't want to constrain the problem with saying min, max because it's not important how you name it, but the way which is somehow natural and fits with requirements is the usage of nodes' values.
    You ask me if (1,1),(2,1),(3,1) is also OK as an output for sample graph (1,2)+(2,3). Yes it is. It is one of those I posted but with additional node which is chosen as a name for a graph. But as you can guess it doesn't matter which node you choose, and the additional information about a node named with its own name is not as important and the information that all other nodes are named with that name but it is 100% acceptable. If you changed the naming convention and started to use letters instead of node values then yes, it would be a must to have the output in the form (1,a),(2,a),(3,a).
    You also ask me about the result for 90x data inserted as 5 rows: (901,902)..(906,904) and present sample result:
    901 902
    905 902
    906 902
    And the answer is no, it is not good result. It misses the information about the nodes 904 and 903 which belong to this graph too. The correct result could be:
    901 902
    905 902
    906 902
    903 902
    904 902
    or any other "combination" which presents 5 nodes with the name of the sixth (in this case of 6-node graph). Just one have to be picked, it doesn't matter which one. The "vertical" order is also irrelevant.
    As you can see there is a lot of room that gives acceptable result. I don't want to constraint it because it can influence performance which is important when dealing with graph structures in relational databases (RDBMS are not predestined to easily cope with that sort of information). It can also influence the chosen algorithm and I'd like to pick the fastest one which gives acceptable result.
    Two numbers x and y are in the same group (graph) if (and only if) at least one of the following is true:
    (1) they appear on the same row together (it doesn't matter which number is in which of the 2 columns), or
    --(2) x appears on the same row with a third number, z, and z is in the same group as y--
    (2) there are other edges (entries) in the table that form a "path" from x to y. And because the direction of the path is not important for the problem (ie. the parent-child table structure can be forgotten for a moment), the path means "there exists connection" between x and y aka "you can walk from x to y".
    The output consists of 2 columns: id (which is unique in the result set) and grp (which identifies the group) *[correct]*
    The id column will always be one of the numbers in the group *[correct]*
    It doesn't matter what the grp column is, or even what data type, as long as it distinguishes between the different groups. *[correct, but as you noted using one, picked number from a graph is the prefferable way]*
    If there are N distinct numbers in the group, I need N rows of output for that group, with id showing all those distinct numbers. *[correct, but if you choose your naming convention as naming a graph with the value of the node belonging to it you can ommit the node which is named for itself (but it doesn't hurt is such row appear in the result)]*
    You ask me if the graph is directed. No it's not. Your example (x,y) and (y,x) is great, and it can be concluded from my first post when I say that "opposite paths" (A->B, B->A) exists. What matters is the connection between the nodes. The parent-child table somehow imposes that direction is important, but for this problem it is not.
    One of the motivations for my post is to know what other people think without affecting their minds with my approach. I don't want to skew anybody's mind into my solution which works, but it's not effective. I don't mind showing it but I kindly ask you to think about the problem before I post it. Diversity of approaches helps to distill the best one.
    As I said I did it with the usage of sys_connect_by_path. If it doesn't appear to you as possible usage then it is likely that I don't use it efficiently. Please understand, I will post it if you ask me one more time but if you can live for a while without my inefficient solution and suggest something with WITH clause I would appreciate it.
    There is no exact result I expect. There are many results which are correct and acceptable. They all must follow the rules described at the beginning.
    Thank you
    Edited by: 943276 on Jun 28, 2012 1:32 AM

  • Parent/Child Domain

    I have a parent/child domain structure. The parent domain consists of domain controllers in three different locations (HO1, HO2, HO3). I have set Sites and Services up so that each remote VPN site (Child domain) has a site link to HO1 and HO2 only. When
    I attempt to ping the parent domain name from a site server it sometimes resolves to HO3 and times out as there isn't an active VPN tunnel between the 2. My question is why would HO3 be replying when it doesn't have a site link to the remote site and in turn
    how can I stop that from being the domain controller that replies?
    Thanks for any advice
    Chris

    Hi,
    To add, Mr. Ace got a good blog regarding Site and Site links, see if it could help here:
    AD Site Design and Auto Site Link Bridging, or Bridge All Site Links (BASL)
    http://blogs.msmvps.com/acefekay/2013/02/24/ad-site-design-and-auto-site-link-bridging-or-bridge-all-site-links-basl/
    Best regards
    Michael
    If you have any feedback on our support, please click
    here.
    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

  • Simulate 1-N relationship as N-N by using Parent-Child structure

    Hi,
    i have a 1-N relationship between SKILL and USER tables meaning 1 skill can be applied to several users. A skill can have a parent skill meaning that a ParentSkill inherits all privileges of it's child.
    I would like to simulate a N-N relationship between users and skills by building a view which goes through the parent-child relationship... Can this be accomplished by building a view?
    Current structure:
    |USERID | USERNAME | SKILLID  |
    +-------+----------+----------+
    |   1   |  Jack    |      1   |
    |   2   |  Simon   |      1   |
    |   3   |  Fred    |      3   |
    +-------+----------+----------+
    |SKILLID | DESCRIPTION   | PARENTSKILL  |
    +--------+---------------+--------------+
    |   1    |  Mechanic     |      2       |
    |   2    |  Inspector    |      3       |
    |   3    |  Supervisor   |      null    |
    +--------+---------------+--------------+Preferred output (ordering of skillid is not important):
    |USERID | USERNAME | SKILLID  |
    +-------+----------+----------+
    |   1   |  Jack    |      1   |
    |   2   |  Simon   |      1   |
    |   3   |  Fred    |      3   |
    |   3   |  Fred    |      2   |
    |   3   |  Fred    |      1   |
    +-------+----------+----------+

    Hopefully this meets your needs:
    WITH
    users as
        SELECT 1 as USERID, 'Jack' as USERNAME, 1 as SKILLID FROM DUAL UNION ALL
        SELECT 2 as USERID, 'Simon' as USERNAME, 1 as SKILLID FROM DUAL UNION ALL
        SELECT 3 as USERID, 'Fred' as USERNAME, 3 as SKILLID FROM DUAL
    skills as
        SELECT SKILLID,CONNECT_BY_ROOT SKILLID AS ANCESTORS
        FROM
                SELECT 1 as SKILLID, 'Mechanic' as DESCRIPTION, 2 as PARENTSKILL FROM DUAL UNION ALL
                SELECT 2, 'Inspector', 3 FROM DUAL UNION ALL
                SELECT 3, 'Supervisor', NULL FROM DUAL
        CONNECT BY PRIOR PARENTSKILL = SKILLID
    SELECT USERID,USERNAME,ANCESTORS
    FROM skills, users
    WHERE users.skillid = skills.skillid
        USERID USERN  ANCESTORS
             1 Jack           1
             2 Simon          1
             3 Fred           3
             3 Fred           2
             3 Fred           1Hope this helps!

  • Parent-Child Unbound Transformation from Linear Structure

    Hi ,
    We need to convert the linear people structure into Parent-Child relation with unbounded depth using XQuery. To give in detail, we have the XML schema as
    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/ParentChild" xmlns:tns="http://www.example.org/ParentChild" elementFormDefault="qualified">
    <complexType name="People">
    <sequence>
    <element name="id" type="string" />
    <element name="name" type="string" />
    <element name="age" type="string" />
    <element name="parentId" type="string" minOccurs="0" />
    </sequence>
    </complexType>
    <complexType name="Peoples">
    <sequence>
    <element name="people" type="tns:People" maxOccurs="unbounded"></element>
    </sequence>
    </complexType>
    <element name="Peoples" type="tns:Peoples"></element>
    <element name="People" type="tns:People"></element>
    <complexType name="Parent">
    <sequence>
    <element name="id" type="string" />
    <element name="name" type="string" />
    <element name="age" type="string" />
    <element name="child" type="tns:Parent" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
    </complexType>
    <complexType name="Parents">
    <sequence>
    <element name="Parent" type="tns:Parent" maxOccurs="unbounded" ></element>
    </sequence>
    </complexType>
    <element name="Parents" type="tns:Parents"></element>
    <element name="Parent" type="tns:Parent"></element>
    </schema>
    The input structure can appear as
    <?xml version="1.0"?>
    <ns0:Peoples xmlns:ns0="http://www.example.org/ParentChild">
    <ns0:people>
    <ns0:id>1</ns0:id>
    <ns0:name>x</ns0:name>
    <ns0:age>11</ns0:age>
    <ns0:parentId>2</ns0:parentId>
    </ns0:people>
    <ns0:people>
    <ns0:id>2</ns0:id>
    <ns0:name>y</ns0:name>
    <ns0:age>11</ns0:age>
    <ns0:parentId>3</ns0:parentId>
    </ns0:people>
    <ns0:people>
    <ns0:id>3</ns0:id>
    <ns0:name>z</ns0:name>
    <ns0:age>11</ns0:age>
    </ns0:people>
    <ns0:people>
    <ns0:id>5</ns0:id>
    <ns0:name>a</ns0:name>
    <ns0:age>11</ns0:age>
    </ns0:people>
    </ns0:Peoples>
    The response should be like below
    <?xml version="1.0"?>
    <ns0:Parents xmlns:ns0="http://www.example.org/ParentChild">
    <ns0:Parent>
    <ns0:id>3</ns0:id>
    <ns0:name>z</ns0:name>
    <ns0:age>11</ns0:age>
    <ns0:child>
    <ns0:id>2</ns0:id>
    <ns0:name>y</ns0:name>
    <ns0:age>11</ns0:age>
    <ns0:child>
    <ns0:id>1</ns0:id>
    <ns0:name>x</ns0:name>
    <ns0:age>11</ns0:age>
    </ns0:child>
    </ns0:child>
    </ns0:Parent>
    <ns0:Parent>
    <ns0:id>5</ns0:id>
    <ns0:name>a</ns0:name>
    <ns0:age>11</ns0:age>
    </ns0:Parent>
    </ns0:Parents>
    We tried with below XQuery, but it is not resulting as expected.
    (:: pragma bea:global-element-parameter parameter="$peoples" element="ns0:Peoples" location="ParentChild.xsd" ::)
    (:: pragma bea:global-element-return element="ns0:Parents" location="ParentChild.xsd" ::)
    declare namespace ns0 = "http://www.example.org/ParentChild";
    declare namespace xf = "http://tempuri.org/RecursiveParentChild/ParentChild/";
    declare function xf:ParentChild($peoples as element(ns0:Peoples))
    as element(ns0:Parents) {
    <ns0:Parents>
    let $results := <a>{
         for $people1 in $peoples/ns0:people where (not (exists ($people1/*:parentId)))
         return
         <ns0:Parent>
                                  <ns0:id>{ data($people1/ns0:id) }</ns0:id>
                        <ns0:name>{ data($people1/ns0:name) }</ns0:name>
                        <ns0:age>{ data($people1/ns0:age) }</ns0:age>
                             </ns0:Parent>
                   </a>
                   let $result1 :=
                   for $people1 in $peoples/ns0:people where (exists ($people1/*:parentId))
                   return
                        if (data($people1/ns0:parentId) = data($results/ns0:id)) then
                             <ns0:child>
                                  $people1/*
                             </ns0:child>
                        else()
                   return $result1      
    </ns0:Parents>
    declare variable $peoples as element(ns0:Peoples) external;
    xf:ParentChild($peoples)
    Anyone tried similar kind of XQuery?. THere is a possibility that the child node can appear before the parent node, how we can handle that as well?
    Any help on this is appreciated
    Regards
    Venkata Madhu

    You need a recursive function in this situation :
    declare namespace ns0 = "http://www.example.org/ParentChild";
    declare namespace xf = "http://tempuri.org/RecursiveParentChild/ParentChild/";
    declare variable $peoples as element(ns0:Peoples) external;
    declare function xf:getChildren($p as element(ns0:people)) as element(ns0:child)*
      for $c in $peoples/ns0:people[ns0:parentId=$p/ns0:id]
      return <ns0:child>
            <ns0:id>{ data($p/ns0:id) }</ns0:id>
            <ns0:name>{ data($c/ns0:name) }</ns0:name>
            <ns0:age>{ data($p/ns0:age) }</ns0:age>
            { xf:getChildren($c) }
             </ns0:child>
    <ns0:Parents>
      for $p in $peoples/ns0:people[not(ns0:parentId)]
      return <ns0:Parent>
            <ns0:id>{ data($p/ns0:id) }</ns0:id>
            <ns0:name>{ data($p/ns0:name) }</ns0:name>
            <ns0:age>{ data($p/ns0:age) }</ns0:age>
            { xf:getChildren($p) }
             </ns0:Parent>
    </ns0:Parents>

  • Making a Directory Structure with JTree.

    Hello,
    Can anyone boss here help me to code to make a
    File System Directory structure through JTree?
    The outlook should be like the Windows Explorer...
    From : [email protected]

    * HarishTree.java
    * Created on September 7, 2004, 2:56 PM
    * @author 120002314
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    import java.io.File;
    import java.awt.event.ActionListener;
    import javax.swing.JToolBar;
    import java.lang.System;
    import java.awt.BorderLayout;
    import java.awt.Component;
    import javax.swing.filechooser.FileSystemView;
    public class HarishTree {
    public static void createAndShowGUI() {
    //creating a tree with drives in the toolbar
    TreeBar bar = new TreeBar();
    JScrollPane scrollpane = new JScrollPane(bar.tree);
    JToolBar toolbar = bar.CreatingTreeBar();
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(toolbar);
    // Display it all in a window and make the window appear
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("FileExplorer");
    frame.getContentPane().add(scrollpane, "Center");
    frame.getContentPane().add(panel,BorderLayout.NORTH);
    frame.setSize(400,600);
    frame.setVisible(true);
    frame.setResizable(false);
    public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    java.lang.System.gc();
    * The methods in this class allow the JTree component to traverse
    * the file system tree and display the files and directories.
    class FileTreeModel implements TreeModel {
    // We specify the root directory when we create the model.
    protected JFile root;
    public FileTreeModel(){}
    public FileTreeModel(JFile root) { this.root = root; }
    // The model knows how to return the root object of the tree
    public Object getRoot() { return root; }
    // Tell JTree whether an object in the tree is a leaf
    public boolean isLeaf(Object node) {  return ((JFile)node).isFile(); }
    // Tell JTree how many children a node has
    public int getChildCount(Object parent) {
    String[] children = ((JFile)parent).list();
    if (children == null) return 0;
    return children.length;
    // Fetch any numbered child of a node for the JTree.
    // Our model returns File objects for all nodes in the tree. The
    // JTree displays these by calling the File.toString() method.
    public Object getChild(Object parent, int index) {
    String[] children = ((JFile)parent).list();
    if ((children == null) || (index >= children.length)) return null;
    return new JFile((JFile)parent,children[index]);
    // Figure out a child's position in its parent node.
    public int getIndexOfChild(Object parent, Object child) {
    String[] children = ((File)parent).list();
    if (children == null) return -1;
    String childname = ((File)child).getName();
    for(int i = 0; i < children.length; i++) {
    if (childname.equals(children)) return i;
    return -1;
    // This method is invoked by the JTree only for editable trees.
    // This TreeModel does not allow editing, so we do not implement
    // this method. The JTree editable property is false by default.
    public void valueForPathChanged(TreePath path, Object newvalue) {}
    // Since this is not an editable tree model, we never fire any events,
    // so we don't actually have to keep track of interested listeners
    public void addTreeModelListener(TreeModelListener l) {}
    public void removeTreeModelListener(TreeModelListener l) {}
    class TreeBar implements ActionListener{
    public JTree tree = new JTree();
    public File[] roots = File.listRoots();
    JToolBar toolbar = new JToolBar();
    public TreeBar(){
    FileTreeModel model = new FileTreeModel(new JFile(System.getProperty("user.home")));
    tree.setModel(model);
    tree.setCellRenderer(new MyRenderer());
    public JToolBar CreatingTreeBar(){
    for(int i=0;i<roots.length;i++){
    JButton button = new JButton(roots[i].getPath(),new MyRenderer().inicon);
    button.addActionListener(this);
    button.setActionCommand(roots[i].getPath());
    toolbar.add(button);
    toolbar.setFloatable(false);
    toolbar.setRollover(true);
    return(toolbar);
    public void actionPerformed(java.awt.event.ActionEvent e) {
    FileTreeModel model = new FileTreeModel(new JFile(e.getActionCommand()));
    tree.setModel(model);
    class MyRenderer extends DefaultTreeCellRenderer {
    ImageIcon inicon = createImageIcon("1.gif");
    ImageIcon exicon = createImageIcon("2.gif");
    ImageIcon leaficon = createImageIcon("3.gif");
    public ImageIcon createImageIcon(String path) {
    java.net.URL imgURL = TreeIconDemo2.class.getResource(path);
    if (imgURL != null) {
    return new ImageIcon(imgURL);
    } else {
    System.err.println("Couldn't find file: " + path);
    return null;
    public Component getTreeCellRendererComponent(
    JTree tree,
    Object value,
    boolean sel,
    boolean expanded,
    boolean leaf,
    int row,
    boolean hasFocus) {
    super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
    if (leaf){
    setIcon(leaficon);
    }else
    if(expanded)
    setIcon(exicon);
    else
    setIcon(inicon);
    return this;
    class JFile extends File{
    public JFile(String path){
    super(path);
    public JFile(File parent,String child){
    super(parent,child);
    public String toString(){
    FileSystem fs = new FileSystem();
    if(fs.isFileSystemRoot(this))
    return(this.getPath());
    else
    return(fs.getSystemDisplayName(this));
    class FileSystem extends FileSystemView{
    public File createNewFolder(File containingDir) throws java.io.IOException {
    return(this.createFileObject(containingDir,"harish"));

  • Compiling files with nested directory structure

    I'm getting "resolve symbol" errors when I try to compile source files which
    are in the child directory whose dependent on files from it's parent
    directory. Here's my current directory structure:
    src
    -->a
    ---->b
    ------>util
    What I'm trying to do is compile files which are in the 'util' directory.
    Some of these files use some of the classes in the 'b' directory. My
    compile statement is the following:
    java -d class -classpath src src\a\b\util\aFile.java
    Files in the 'util' directory has a import a.b.* statement on top, but I
    don't think that's the problem, let alone necessary.
    Any assistance would be appreciated.

    Files in the 'util' directory has a import a.b.*
    statement on top, but I
    don't think that's the problem, let alone necessary.You must import classes that you use if the classes are not in the same package. The classes in src\a\b should have a package statement as the first line of source code and I am guessing it should be "package a.b;" Likewise, the classes in src\a\b\util should have a "package a.b.util" line. It's hard to guess what you have in mind. If you have the package statements, then the classes in a.b.util can import a.b.whatever. This will work.

  • Does table STPOX contain parent-child relationship between components

    Hello
    I need to get a list of components of SO BOM.
    FM CS_BOM_EXPL_KND_V1 exports an output table STPOX.
    Does this table contain parent-child relationship between components? If yes , can somebody tell me which fields contain parent child id.
    thanks

    Hi,
    STPOX is not a table, it is a structure & hence there is no storing of data in a structure. The table which stores this info is STPO.
    To get the link you can refer to STPO-STLNR & pass this value to MAST-STLNR, this way you can link the child with its parent.
    Regards,
    Vivek

  • How to allow Sharepoint users to login from multiple parent-child accounts?

    Our client has mutliple AD domains and wants to allow people which have multiple AD accounts in multiple domains to login as THE SAME user:
    - only primary account will be visible in search
    - there will be only one user profile with all informations gathered from all sub accounts
    - permissions for the sub account will be in sync with parent account
    - task generated for parent will be visible for child accouns too etc
    - ad admin can link the account together in the Active Directory - this link is permament (even if we move users to another OU) and ad admin can define which account is primary and secondary (parent/child)
    How we can implement this in Sharepoint 2010 Std Server?

    Everything in SharePoint keys of the Security Identifier (SID) of a user.  Each user in a domain has a unique SID, so there is no way to have multiple users recognized in SharePoint as the same user.
    Paul Stork SharePoint Server MVP
    Principal Architect: Blue Chip Consulting Group
    Blog: http://dontpapanic.com/blog
    Twitter: Follow @pstork
    Please remember to mark your question as "answered" if this solves your problem.

  • OBIEE 11g - Navigation in Parent Child Hiearchy not working

    Hi All,
    I have a employee parent child hierarchy and I want to show revenue for each employee in the report. I have modeled my revenue as a measure like case 4 shown in the following link
    http://www.rittmanmead.com/2010/11/oracle-bi-ee-11g-parent-child-hierarchies-multiple-modeling-methods/
    So for example this is my report ,
    --David (30)
    ---Sandra (15)
    -----Joe (10)
    Joe'e revenue is 10, Sandra's is 5 (showing her 5 Joe's revenue) and David's is 5 (showing his 5 Sandra's revenue)
    Issue :
    Now what I want is to provide action link on the revenue column so that when user would click on revenue for any employee it would direct them to a detail report showing the bifurcation.
    For ex, I want that when user click on 15 which is Sandra's revenue, he would be redirected to a detailed report for Sandra and similary for Joe and David
    MY ISSUE IS that the navigation is NOT working for sandra and Joe. It is only working for David (who is the ancestor of sandra and Joe). When I click on 15 to see sandra's detail report, it doesn't do anything and in the bottom left corner of the browser status bar below I see an ERROR saying
    (same for Joe but David work's fine)
    Message: 'getLevelInfo(...)' is null or not an object
    Line: 1
    Char: 11142
    Code: 0
    URI: http://localhost:7001/analytics/res/b_mozilla/answers/selectionsmodel.js
    Why is that happening? Is that because I have modeled the revenue as an measure and not attribute. Is navigation not possible in this case?
    Anybody has any solution or workaround for this, it will be highly appreciated.
    Thanks,
    Ronny

    Ok, so let me explain this in detail and give the structure of my tables and the data,
    There are three tables.
    1.Parent Child relationship table - pctable
    2.Closure table which OBIEE creates through a script - reltable
    3.Fact table which contains the revenue - facttable
    This is the data
    pctable
    personid | managerid
    David | NULL
    Sandra| David
    Joe|Sandra
    reltable
    memberkey | ancestorkey |distance |is_leaf
    David|NULL|NULL|0
    David|David|0|0
    Sandra|Sandra|0|0
    Joe|Joe|0|0
    Sandra|David|1|0
    Joe|Sandra|1|1
    Joe|David|2|1
    facttable
    personid|revenue
    David|5
    Sandra|5
    Joe|10
    and my joins conditions are, I join pctable to reltable and then reltable is joined to facttable like this.
    pctable.personid = reltable.ancestorkey
    reltable.memberkey = facttable.personid
    and then in the report, when I pull up the pchierarchy build from pctable and revenue , I get as below and like I said, when I click on Sandra to see the revenue she contributes, I am not able to navigate. Can you let me know what modifications needs to be done?
    ---David(20)
    ----Sandra(15)
    ------Joe(10)

  • How to update a parent child hierarchy in OBIEE

    Hello All
    Quick question about updating parent child hierarchy in OBIEE.
    As we know, OBIEE 11G allows us to create value based hierarchy by generating table creation script and insert script. In the typical example of employee dimension, the parent child relationship table will be created with the following 4 attributes:
    MEMBER_KEY, ANCESTOR_KEY, DISTANCE, IS_LEAF
    So, what if later in the years some of the employees got promoted, retired or transferred? The value based hierarchy is going to change because person 1 reports to manager 2 now instead of 1. Obviously, the records in employee dimension is going to be updated. When that happens, how to update the parent child relation table with the same information? Do we have to rerun the insert script? How do we keep the history of employee changes and hierarchy changes?
    Please advice
    Thank you

    I guess it will update when the structure changes,Let see the response from other gurus.
    Thanks,

  • Representating Hierarchical (Parent-Child) relation graphically using Swing

    Hi,
    I have to represent a hierarchical data which is having Parent-Child relation using Swing. I am not able to upload the image overhere, so I am represnting the data in such a way so that one can understand this problem. If anyone knows how to upload image on Sun forum, please let me know it will be great help for me.
    Parent Root - A
    Child of A - B, C, D
    Child of C - E, F, G
    Child of F - H
    Child of D - J, K
    The data needs to be represented in two formats-
    1. Tabular Format
    I am able to represent data in this format using combination of JTree and JTable. The data is getting represented in tabular format and I am able to expand and collapse the parent nodes to see the childs. The tabular data will look like below structure,
    A
    I_B
    I
    I_C
    I I_E
    I I
    I I_F
    | I |_H
    | I
    I I_G
    I
    I_D
    I
    I_J
    I
    I_K
    2. Graphical Format
    This is the other way in which I need to represent the data. The above shown tabular data needs to represented in graphical form. The end result should look like,
    I A I
    ____________________I__________________________
    ___I___ __I__ __I__
    I  B  I I  C   I I  D   I
    ____________________I____________ ______I________
    ___I___ __I__ __I__ __I__ ___I__
    I  E  I I  F   I I  G   I I  J   I I   K    I
    __I___
    I   H   I
    Each box representing alphabates will be a component (like JPanel) which will have details about the item to be displayed. The parent and child should be connected with each other using line. This representation should be created at runtime using the hierarchical data. Also the parent and child relations should be expandable/collapsible as they are in JTree.
    I am not able to find any component or any solution in Swing which can provide me this graphical representation. It will be great help if anyone can help me out in this.
    Thanks in advance.

    Sorry for inconvinience for the data representaion in graphical form. I don't know how this get jumblled. Please try to figure out the tabular/graphical representation using pen and paper as forum is not providing any help to upload an image.
    Sorry again for inconvinience.
    Thanks
    Manoj Rai

  • Package NOT accessible outside parent/root directory - NoClassDefFoundError

    I can't seem to import a package I created, EXCEPT UNDER THE TOP LEVEL
    PARENT DIRECTORY. The following chronicles what I attempted. I read, and
    tried related postings in this newsgroup, but they have not totally
    solved my problems.
    /* d:\java\zsamples\zswingpackage1\swing-optgrp-eg1.java
    /* Following package stmts. causing run-time error "Exception in thread
    "main" java.lang.NoClassDefFoundError: zswingpackage1/Swing
    OptGroup1a [(wrong name: java/zsamples/zswingpackage1/SwingOptGroup1a)]".
    Solution: as suggested in newsgroup posting, changed package stmt. to
    include ONLY the SUBDIRECTORIES UNDERNEATH the top level 'java'
    directory (EXCLUDE 'java.' qualifier from package stmt.). Compiled from
    the parent directory of the package path, and also ran from that path
    i.e.
    package zsamples.zswingpackage1;     // omits the top level 'java' directory
    public class swing_optgrp_eg1 extends JFrame {
    Here's how I compiled:
         cd java
         d:\java>javac zsamples\zswingpackage1\swing_optgrp_eg1.java
    Here's how I executed:
         Following WORKED. Uses '.' aot backslash qualifier.
         D:\java>java zsamples.zswingpackage1.swing_optgrp_eg1
         Above package defn. solution allowed a calling program (residing under
         the top level 'java' directory) to successfully import the package
         (refer \java\test-package2.java)!! But having difficulties in importing
         this package when referenced in a calling program RESIDING IN A DEEPER
         LEVEL DIRECTORY, such as d:\java\zsamples (refer package-test1.java).
    Calling program1 (resides under d:\java\package-test2.java): WORKED
         /* This source purposely placed in the 1st level directory to test the
         theory/scenario: is it necessary to store the calling program (that
         accesses my package) in the top level directory (d:\java)? */
         import zsamples.zswingpackage1.swing_optgrp_eg1;     // resides under d:\java
    Calling program2 (resides under d:\java\zsamples\package-test1.java): DID NOT WORK
         /* Following import causing "package zsamples.zswingpackage1 does not exist"
              COMPILE ERROR. But worked in package-test2.java.
         Solution (wasn't necessary in package-test2.java):
              - specified 'java' in classpath i.e.          
                   d:\java\zsamples>javac package-test1.java -classpath .;d:\java
              But subsequently, when RUNNING using D:\java\zsamples>java Package_Test1,
              caused RUN-TIME error "Exception in thread "main" java.lang.NoClassDefFoundError:
              zsamples/zswingpackag e1/swing_optgrp_eg1".
              import zsamples.zswingpackage1.swing_optgrp_eg1;     // resides under d:\java
         /* Unsuccessful remedies:
         1) use -classpath with compiler i.e.
              d:\java\zsamples>javac package-test1.java -classpath .;d:\java\zsamples\zswingpackage1
         2) removed top level 'zsamples' qualifier in package name, compiled
              with, and without -classpath parm. i.e.
              import zswingpackage1.swing_optgrp_eg1;     // resides under d:\java\zsamples
              This caused "cannot access zswingpackage1.swing_optgrp_eg1 bad class
              file: .\zswingpackage1\swing_optgrp_eg1.class class file contains wrong
              class: zsamples.zswingpackage1.swing_optgrp_eg1 Please remove or make
              sure it appears in the correct subdirectory of the classpath."
         3) added top level 'java.' qualifier in package name, compiled with, and
              without -classpath parm. i.e.
              import java.zsamples.zswingpackage1.swing_optgrp_eg1;
              This caused "package java.zsamples.zswingpackage1 does not exist".
         4) when running, specified '.;d:\java\zsamples\zswingpackage1', or
              '.;d:\java\zsamples' in -classpath i.e.
                   D:\java\zsamples>java Package_Test1 -classpath .;d:\java\zsamples\zswingpackage1
                   D:\java\zsamples>java Package_Test1 -classpath .;d:\java\zsamples
         // Following import caused same errors as above import stmt.
         //import zsamples.zswingpackage1.*;
         class Package_Test1 {
    My PC configuration:
         java version "1.4.0_01"
         Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03)
         Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode)
         JRun 4 (Build 47304)
         WinNT 4.0 SP5
         IE 5.50
         CLASSPATH=.;D:\jakarta-tomcat-3.3.1\lib\common\servlet.jar;
              C:\JRun4\servers\default\default-ear\default-war\WEB-INF\classes
         JAVA_HOME=C:\j2sdk1.4.0_01
         Path=C:\j2sdk1.4.0_01\bin;C:\WINNT\system32;C:\WINNT;
              C:\Program Files\Network Associates\PGPNT;C:\Program Files\MTS;d:\MSSQL7\BINN

    It's hard for me to follow everything you posted. Perhaps this link will help.
    http://java.sun.com/docs/books/tutorial/java/interpack/packages.html
    Some things to keep in mind. Packages are not directories - they just use the path structure of directories to manage namespaces. No matter where a class is, if your Classpath is d:\java, then the root of any class in a package must be in a directory structure that exists inside d:\java. Also, compilers and the JVM utilize the fully qualified name of a class, meaning the package name plus the class name.

Maybe you are looking for