Runtime dynamic filtering TreeModel

Hello,
Changing a tree during runtime seems to be a problem. I've looked at different threads and now I have the following class which filters a delegated DefaultTreeModel (see SimpleFilteredTreeModel and the corresponding TestFilteredTreeModel classes below). Notice, that the commented lines in the isShown-method do filter out alternaitve objects behind the tree at startup of the application correctly.
I used the following two steps to extend the SimpleFilteredTreeModel to make it refreshing dynamically:
1. Step: ViewFilter Interface
First I enabled the SimpleFilteredTreeModel to set filter roules dynamically by introducing an interface (ViewFilter) and three implementions according to the alternatives shown in the isShown method. The filter is set by a method setViewFilter(ViewFilter).
2. Step: Update the Model
The method setViewFilter(ViewFilter) basically sets the new filter and tries to update the model so it shows up under the new behaviour.
    public void setViewFilter(ViewFilter filter) {
        this.filter = filter;
        // Notify the model
        final TreeNode root = (TreeNode) getRoot();
        final int childCount = root.getChildCount();
        final int[] indices = new int[childCount];
        final Object[] children = new Object[childCount];
        for (int i = 0; i < childCount; i++) {
            indices[i] = i;
            children[i] = getChild(root, i);
        fireTreeStructureChanged(this, new Object[]{root}, indices, children);
    }However, the view does not move at all. I tried also reload() and nodeChange(root) of the filter model and its delegate. No success.
If somebody knows how to extend this example to work dynamically, I would appreciate it highly.
-- Thanks
-- Daniel Frey
// File: SimpleFilteredTreeModel.java
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
public class SimpleFilteredTreeModel extends DefaultTreeModel {
    private DefaultTreeModel delegate;
    public SimpleFilteredTreeModel(DefaultTreeModel delegate) {
        super((TreeNode) delegate.getRoot());
        this.delegate = delegate;
    public Object getChild(Object parent, int index) {
        int count = 0;
        for (int i = 0; i < delegate.getChildCount(parent); i++) {
            final Object child = delegate.getChild(parent, i);
            if (isShown(child)) {
                if (count++ == index) {
                    return child;
            else {
                final Object child2 = getChild(child, index - count);
                if (child2 != null) {
                    return child2;
                count += getChildCount(child);
        return null;
    public int getIndexOfChild(Object parent, Object child) {
        return delegate.getIndexOfChild(parent, child);
    public int getChildCount(Object parent) {
        int count = 0;
        for (int i = 0; i < delegate.getChildCount(parent); i++) {
            final Object child = delegate.getChild(parent, i);
            if (isShown(child)) {
                count++;
            else {
                count += getChildCount(child);
        return count;
    public boolean isLeaf(Object node) {
        return delegate.isLeaf(node);
    private boolean isShown(Object node) {
        final DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) node;
        final Object obj = treeNode.getUserObject();
        //return obj instanceof TestFilteredTreeModel.Datum1 || obj instanceof TestFilteredTreeModel.Datum2;
        //return obj instanceof TestFilteredTreeModel.Datum1;
        return obj instanceof TestFilteredTreeModel.Datum2;
// File: TestFilteredTreeModel
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.ArrayList;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.JTree;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
public class TestFilteredTreeModel {
    private DefaultMutableTreeNode[] nodes = new DefaultMutableTreeNode[0];
    public static void main(String[] args) {
        new TestFilteredTreeModel();
    public TestFilteredTreeModel() {
        final TreeNode root = createRootNode();
        final TreeModel model = new SimpleFilteredTreeModel(new DefaultTreeModel(root));
        final JTree tree = new JTree(model);
        final JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JScrollPane(tree));
        f.setSize(200, 300);
        f.setVisible(true);
    // Random tree generation
    private Random random = new Random();
    private TreeNode createRootNode() {
        final MutableTreeNode rootNode = createRandomNode();
        updateCache(rootNode);
        for (int i = 0; i < 30; i++) {
            final DefaultMutableTreeNode childNode = createRandomNode();
            pickRandom(nodes).add(childNode);
            updateCache(childNode);
        return rootNode;
    private void updateCache(MutableTreeNode childNode) {
        final List list = new ArrayList(Arrays.asList(nodes));
        list.add(childNode);
        nodes = (DefaultMutableTreeNode[]) list.toArray(new DefaultMutableTreeNode[0]);
    private DefaultMutableTreeNode createRandomNode() {
        final Datum[] data = new Datum[]{new Datum2(), new Datum1()};
        return new DefaultMutableTreeNode(data[random.nextInt(2)]);
    private DefaultMutableTreeNode pickRandom(DefaultMutableTreeNode[] nodes) {
        return nodes[random.nextInt(nodes.length)];
    public static class Datum {
        private static int counter = 0;
        protected int thisCounter = 0;
        public Datum() {
            thisCounter = counter++;
    public static class Datum2 extends Datum {
        public String toString() {
            return "Datum2 " + thisCounter;
    public static class Datum1 extends Datum {
        public String toString() {
            return "Datum1 " + thisCounter;
// file: ViewFilter.java
import javax.swing.tree.DefaultMutableTreeNode;
public interface ViewFilter {
    boolean isShown(DefaultMutableTreeNode node);
// file: Data1Filter.java
import javax.swing.tree.DefaultMutableTreeNode;
public class Data1Filter implements ViewFilter {
    public boolean isShown(DefaultMutableTreeNode node) {
        final Object obj = node.getUserObject();
        return obj instanceof TestFilteredTreeModel.Datum1;
// file: Data2Filter.java
import javax.swing.tree.DefaultMutableTreeNode;
public class Data2Filter implements ViewFilter {
    public boolean isShown(DefaultMutableTreeNode node) {
        final Object obj = node.getUserObject();
        return obj instanceof TestFilteredTreeModel.Datum2;
// file: Data12Filter.java
import javax.swing.tree.DefaultMutableTreeNode;
public class Data12Filter implements ViewFilter {
    public boolean isShown(DefaultMutableTreeNode node) {
        final Object obj = node.getUserObject();
        return obj instanceof TestFilteredTreeModel.Datum1 || obj instanceof TestFilteredTreeModel.Datum2;
}

The filtering works (after a fasion). Please clarify your problem.
I extended SimpleFitleredTreeModel as you described, along with changing isLeaf to use the filter
if (filter != null)  return filter.isShown( treeNode );I extended TestFiltredTreeModel constructor as follows, add the member
import javax.swing.*;
import java.awt.event.*;
private SimpleFilteredTreeModel model;Altered TestFilteredTreeModel constructor as follows:
       JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("Filters");
        JMenuItem item;
        item = new JMenuItem( "Data1Filter" );
        item.addActionListener( new ActionListener() {
               public void actionPerformed( ActionEvent ev ) {
                    model.setViewFilter( new Data1Filter() );
          menu.add( item );
        item = new JMenuItem( "Data2Filter" );
        item.addActionListener( new ActionListener() {
               public void actionPerformed( ActionEvent ev ) {
                    model.setViewFilter( new Data2Filter() );
          menu.add( item );
        item = new JMenuItem( "Data12Filter" );
        item.addActionListener( new ActionListener() {
               public void actionPerformed( ActionEvent ev ) {
                    model.setViewFilter( new Data12Filter() );
          menu.add( item );
        bar.add( menu );
        f.setJMenuBar( bar );

Similar Messages

  • Creating Report using EPM Functions with Dynamic Filters

    Hi All,
    I am new to BPC, In BPC 7.5 i seen like we can generate EPM report using EVDRE function very quickly and easy too. Is the same feature is existing in BPC 10.0 ? if no how can we create EPM reports using EPM Functions with Dynamic Filters on the Members of the dimension like in BPC 7.5.
    And i searched in SDN, there is no suitable blogs or documents which are related to generation of Reports using EPM Functions. All are described just in simple syntax way. It is not going to be understand for the beginners.
    Would you please specify in detail step by step.
    Thanks in Advance.
    Siva Nagaraju

    Siva,
    These functions are not used to create reports per se but rather assist in building reports. For ex, you want to make use of certain property to derive any of the dimension members in one of your axes, you will use EPMMemberProperty. Similary, if you want to override members in any axis, you will make use of EPMDimensionOverride.
    Also, EvDRE is not replacement of EPM functions. Rather, you simply create reports using report editor (drag and drop) and then make use of EPM functions to build your report. Forget EvDRE for now.
    You can protect your report to not allow users to have that Edit Report enabled for them.
    As Vadim rightly pointed out, start building some reports and then ask specific questions.
    Hope it clears your doubts.

  • Hide Dynamic Filters list criteria

    Hello Dear Experts,
    I would like to ask you whether it is possible and how can i hide the Dynamic Filters list criteria from a BW Portal (Web) report when exporting this or broadcasting this by email in pdf format???
    I mean about the first page of the output report which includes the settings & dynamic filters & key figures used in the report.
    Great Thanks in Advance...!!!!
    Kind Regards
    George

    Hi George
    There are two options:
    1. The default template for portal display is 0ANALYSIS_PATTERN. In this, there is a web item Info field.
    This causes the static, dynamic filters to appear on the report on a click on Print button.
    The option is to copy 0ANALYSIS_PATTERN to a new web template. Change the new template for not displaying this on click of Print button using the command option. Then use the new template as default template in SPRO. This will make it applicable for all the queries run on portal directly. Remember, for changes to take affect J2EE engine should be restarted.
    2. If this is only required for few queries, then the best approach is to create the template for each report and publish them.
    However, if the look and feel should be similar to other reports, then copy 0ANALYSIS_PATTERN and make changes to print command. The default template need not be changed here.
    Thanks
    Sri

  • Dynamic filters print (pdf)

    Hi
    In our print web template we have an information field that shows us
    dynamic filters including key figures and structures.
    Is it possible NOT to show the key figures and structures, but everything else ?
    Kind Regards
    Steffen

    Hi,
    per default the template 0ANALYSIS_PATTERN_EXPORT is used for the export. If you want different items to appear in the exported PDF file, you can define your own export template and maintain this template for the PDF command.
    Best regards,
    Janine

  • Dynamic filtering with BEx query variables in WebI 3.1

    Hi experts.
    Can anybody help me ?
    1) I use BEx query variables in WebI 3.1 .  But i can't understand how to order fields of selection screen in WebI reports
    2) How can i use Dynamic filtering with BEx query variables in WebI 3.1 ?
        It's need that  list of second field on selection screen will be accoding to result of selection first field on selection screen and so on .
        Need i use BEx user-exit variables ?
    Thank you

    Hi,
    1)  Variable sequence isn't respected in XI3.1 - and can't be modified in OLAP.unv  (this enhancement exists in 4.0 )
    2)  Dynamic filtering?  Yes, Exit routines are the best way to go for this.
    Regards,
    H

  • Photoshop, smart objects and dynamic filters performance issues

    Hello,
    I am quite new to Photoshop, after several years with Capture NX 2 to process thousands of NEF and  RW2 files (RAW from Nikon and Panasonic).
    I use Photoshop to read RAW pictures, convert them to a smart object, then apply several dynamic filters, mainly from the Nik Collection (Dfine, Color Efex Pro, Sharperner Pro), sometimes Topaz Denoise. I do that with actions, so I can batch process many pictures.
    But sometimes I have to manually adjust some settings, and this where I do not really understand the way Photoshop works. If I have to adjust let say the last filter on the stack, Photoshop reprocesses all the filters below, which can be very tedious as this takes lot of time.
    Is there a way to tell Photoshop to keep all intermediate data in memory, so if you have to adjust one of the last filters the process starts immediately?
    Any help would be greatly appreciate.
    Frederic.

    Thank you Chris.
    I am surprised, as for years there has been a lot of discussions about Capture NX2 which was supposed to be slow. In fact, when using the same filters (+ Nik Color Efex), NX2 is much much faster than Photoshop, and when you have to make an adjustment in any of the setttings, you can do that immediateley.
    Of course, Photoshop is completely opened and NX2 totally closed (and now not supported anymore).
    But, I really don't know how to adapt my workflow, except buying the most powerful PC possible (I already have 2 which are quite powerful), and this will still be far from being comfortable. I am used to tune manually many many pictures (adjust noise reduction, sharpening, light, colors ...), and this was quite fast with NX2.
    I am probably not on the correct forum for this, and I will try to investigate elsewhere.
    Anyhow, thank you for your answer.
    Frédéric

  • Filtering TreeModels, Looking for opinions

    Hi all,
    I have a rather strange requirement for a JTree/TreeModel that I was hoping that the java developer connection could help me with.
    The problem goes like this.
    We have a TreeModel, which is needed in its completeness for our internal usage within the UI, but some of the JTrees need the ability to "remove" or "filter" out certain levels of treenodes. For example:
    A
    -B
    --C
    ---D
    ---E
    might become
    A
    -B
    --D
    --E
    in the "filtered" TreeModel view. I was wondering if anyone else had this problem, and if so, how did they solve it? (I was thinking of applying a kind of "filter" pattern, but this would require multiple tree models, I think. Perhaps there is a better way)..
    Any help you can provide is appreciated.

    Just thought you'd like to know, this approach appears to be working now, after some tinkering and debugging..
    The hardest part of the operation was "re-directing" the events to remove parts of the path that were not appropriate, thus ensuring the tree is updated correctly..
    Also, found a small bug in your method. ;) should really be:
    public int getChildCount( Object parent )
    int count = delegate.getChildCount( parent );
    int result = count;
    for( int i = 0 ; i < count ; i++ )
    Object child = delegate.getChild( parent, i );
    if( isNodeFiltered( child ))
    result += getChildCount( child ) - 1;
    return result;
    Since we can't iterate over the count while increasing it without getting ArrayIndexOutOfBoundsException..
    I'm probably not allowed to post the entire source code since it was developed for work, but the hardest method (the re-direction of the events) goes like this:
    o Obtain the new list of children from the old list of children in the TreeModelEvent. This is determined by running the filter on each one to see if they are "in" or "out".
    o If there are no children left in the new list, throw the event away, it is inconsequential.
    o Otherwise, obtain the "new" parent from one of the new children, since the parent might be filtered out as well. This involves writing a method which returns the first non-filtered parent of the current node.
    o For each of these new children, obtain their indices respective to their new parent. This can be accomplished by use of a "getChildren" method very similar to your getChildCount method (which returns an ArrayList), and then a search through the list to find the matching child..
    o Place the new indices in a new event, along with the new children and new parent
    o include the new source of the event ("this" in this case).
    ... voila, instant new event, which can be re-fired. The code is the same for all of the tree nodes changed, inserted, removed, or structure changed.

  • ODI: Using Table Name in Dynamic filters

    We have a requirement, where the filters have to be dynamically generated and applied on the source system data stores.
    The requirement can be best explained by the below example.
    I have EMPLOYEE and DEPARTMENT table as the source datastores and EMP_DEPT (flat table) as the target datastore.
    The filter condition will be updated now and then by the admin in a table. They would like to run the integration interface with the condition mentioned in the table.
    Metadata table and sample data: (DY_FILTERS)
    TABLE_NAME | INTERFACE_NAME | CONDITION
    EMPLOYEE | EMP_DEPT | EMPLOYEE.EMPLOYEE_NAME LIKE 'A%'
    DEPARTMENT | EMP_DEPT | DEPARTMENT.DEPARTMENT_ID = 10
    So now the interface has to run with the conditions 'EMPLOYEE.EMPLOYEE_NAME LIKE 'A%' and DEPARTMENT.DEPARTMENT_ID = 10.
    To achieve, the best possible solution I can think of is, I have defined a variable for the dynamic filter and under the refresh section and I am planning to use the following query:
    SELECT CONDITION FROM DY_FILTERS WHERE INTERFACE_NAME = <%=odiRef.getPop("POP_NAME")%> AND
    TABLE_NAME = ***************.
    I was able to pick the interface that is currently involved by using getPop() method where as I dont have clue for getting the table name.
    Please share with me, if you have answer. Also if you have any other way to achieve this, please share the same.
    Note: The actual scenario is more complex than the example given above. But the crux of the requirement is very well covered in the example.
    Edited by: 986046 on Feb 14, 2013 2:06 PM

    Hi,
    If you've only one source datastore in your interface, you can retrieve it's name with <%=odiRef.getSrcTablesList("[RES_NAME]", "")%>.
    If you have more than one source it will list all you sources.
    However I can't see when you plan to refresh your variable. getSrcTablesList won't work before/after the interface execution.
    Regards,
    JeromeFr

  • Dynamic Filters

    Hi guys!
    I was wondering if there is a way to use filters with
    Javascript variables, or, even better, dynamically generated from
    XML columns...
    This is what I'm talking about:
    var filterJuly = function(dataSet, row, rowNumber)
    if (row["archive"].search(/July/) != -1)
    return row;
    return null;
    The thing is, I don't want to create a function for each
    month I want to filter out. Maybe there is a way to code something
    smart that knows I'm clicking on "July", and automatically filters
    in the "archives" that contain the word I just clicked. Is it too
    far fetched? I'm a layman, so I wouldn't know...
    Or maybe it's better to do it through paging?
    Any help would be greatly appreciated!
    Thanks in advance,
    Tomas

    Nevermind, I got it! :)

  • WAD - Dynamic Filters

    Hi Gurus,
    Please consider the following scenario:
    In have created a web report (using WAD and embedding a query in the same).
    Now when I run the report (after keying in the selection screen variables), I see the variable values getting populated in the STATIC filter values (this can be seen in the reort output screen).
    We need the selection screen values to be populated to DYNAMIC filter values, so that when we jump to detailed report, the variable values can be directly picked from DYNAMIC filter values.
    Please suggest as to how can we achive this.

    Hi,
    you need to move your variables in the query designer from "charistic restriction" to "default values". Then you can change your variable values during navigation.
    best regards,
    Leo

  • Dynamic filtering, data level security

    In order to enforce data level security we would like to do the following:
    1. Send a user identification parameter through a URL that calls a BAM report.
    2. According to this parameter retrieve from a dedicated data object the list of organization units for which the user has privileges.
    3. Filter the data displayed in the report according to the values retrieved in (2).
    Any ideas how to implement this.
    TX in advance ,
    Alon

    Hello Alon- Looks like you are doing some advanced stuff and interesting security handling.
    Well - all the 3 points you mentioned are built-in the product ready to use. I have built a sample on this (yet to be published on OTN). This feature is called row level security, you can see the architect dataobject security documentation. In short -to acheive this-
    1. build a security object called mySecurity with example 2 fields, username & orgunit.
    2. populate this security object, username should be of format DomainName/UserName.
    3. There can be multiple rows containing same usernames, to emphasis (model) multiple orgunit access.
    4. In your main dataobject, add additional column called orgunit and populate it.
    5. In your main dataobject, add security filter with security object mySecurity
    6. Run the report- during runtime, it will prompt for username/passwd, after authentication, it will use the 'username' logged in along with security filter object, and the report will ONLY display data for which this user has access.
    Hope this addresses your question.

  • How do I translate multiple Dynamic Filters into EPMAxisOverride formula?

    I'm trying to replicate an entity selection I have made in the member selector screen with multiple filters into a EPMAxisOverride formula but I have not been successful. The output of the original selection (see attached file) maintains the hierarchy order while testing for each of the filters. When trying to recreate the EPM formula, the output is grouped by filters which is not the intended result. I'm pretty sure it's a matter of using the correct syntax in the EPMAxisOverride formula. Any help on this would be appreciated.
    Thanks!
    Daniel.-

    Vadim,
    I was trained on EPMAxisOverride formula. I'm not familiar with the EPMDimensionOverride? What's the difference and why would it work in one and not the other one formula?
    Columns: Accounts
    Rows: Entities
    Users will select an Entity (most of the time a brand level) and then, the report pulls Product group, PCNONE, and Profit Center entities where PG and PCNONE are descendants of Profit Centers.
    I need to maintain the same hierarchy structure as in the Entity dimension as shown below.
         PG123
         PG443
         PG4509
         PCNONE23
    PC23 (Total)
         PG345
         PG325
         PG908
         PCNONE34
    PC34 (Total)
    I don't want to group the different entity types into big groups, as I stated above, they most maintain its hierarchy order.
    Thank you!

  • Dynamic Filters possible ?

    Hi there,
    My Boss wants to Switch to Power View from Reporting Services, but he wants to know if everything you could do in SSRS is available in Power View first.
    One of the things i noticed immediately is that i couldn't define the filter values for the Months dynamically (is this Really True ?)
    What i want is something in the form i used in SSRS Parameters as Default Value:
    cstr(year(dateadd(
    "m", 0, now()))) +
    "-"+ right(
    "0"+ cstr(month(dateadd("m",
    0, now()))), 2)
     --- For the current Year-Month
    Is there a way to do this in Power View ? any Way ???
    Thanks a lot in advance!

    Hi gbobj,
    Power View is quite limited in comparison to SSRS. If you require very tight control over the look, feel, and behavior of your reports and dashboards
    then it's probably best to stay with SSRS. Where Power View shines is in flexible data analysis and allowing attractive data visualisations to be created very quickly.
    It may be that you can identify some of your simpler reports/dashboards that would benefit from being recreated in Power View without losing important
    functionality. However, for your more complex ones you may want to hold off on using Power View for them unless your end-users are willing to lose some of the functionality that they have in the SSRS versions.
    With regards to the dynamic selection of the year and month, you could try a similar approach to the one outlined in my first reply in
    this thread, but the approach is dependent on when the data model was last refreshed and isn't as elegant or powerful as using an expression to dynamically set the default value for an SSRS parameter behind the scenes.
    Regards,
    Michael
    Please remember to mark a post that answers your question as an answer...If a post doesn't answer your question but you've found it helpful, please remember to vote it as helpful :)
    Website: nimblelearn.com, Blog:
    nimblelearn.com/blog, Twitter:
    @nimblelearn

  • Dynamic Filtering in PWA Views

    Hi,
    is it possible to use variables like [me] or [current date] for filters in PWA 2010?
    Thanks,
    JohnJohn

    Hi Micoka,
    The filters in PWA 2013 (assuming you are talking about PWA) have the same behavior than filters in the previous versions, thus the Pradeep's answer is still valid for PWA 2013.
    Hope this helps,
    Guillaume Rouyre, MBA, MCP, MCTS |

  • Missing IN or OUT parameters error -filtering treeModel using VL Accessor

    Hi All ,
    jdev 11.1.1.6 , ADF BC
    I am trying to filter a leaf node of a tree hierarchy using Frank's example @ Pg 12 - http://www.oracle.com/technetwork/developer-tools/adf/learnmore/feb2011-otn-harvest-328207.pdf
    I try to do this in a AM method -
    if (r != null) { RowSet rs = (RowSet)r.getAttribute("EmployeesView");
    if (rs != null) { ViewObject accessorVO = rs.getViewObject();
    //applyViewCriteria on accessorVO now...But somehow after I get the ViewObject the ViewLink paramValues become null due to which I get the error
    java.sql.SQLException: Missing IN or OUT parameter at index:: 2after I do accessorVO.executeQuery()...
    I also see a message immediately after I get the accessorVO in the code bit mentioned above
    <accessor VO name via ViewLink reference> ViewRowSetImpl.setParamValues params changed.The Rowset rs has the params in it when I inspect the same :(
    Can anyone help with what I am missing.

    Anybody has any idea?
    The only difference is probably that I am trying to show this in the below tree-like structure instead of a actual af:treeTable.
    <af:iterator id="i1" value="#{bindings.LocationsView1.collectionModel}"
                         var="locRow">
              <af:outputText value="#{locRow.City}" id="ot2"/>
    <af:iterator id="i2" value="#{locRow.children}" var="deptRow">
                <af:outputText value="#{deptRow.DepartmentName}" id="outputText1"/>
    <af:table value="#{deptRow.children}"
                          var="row" rowSelection="single" id="t1">
                  <af:column sortProperty="FirstName" sortable="false"
                             headerText="#{bindings.EmployeesView1.hints.FirstName.label}"
                             id="c1">
                    <af:outputText value="#{row.FirstName}" id="ot1"/>
                  </af:column>
                </af:table>
              </af:iterator>I am basically trying to filter the Departments i.e. 2nd node .. TreeBinding in page definition has been configured properly.
    I am able to replicate this for a simple Loc-Dept-Emp hierarchy.
    https://docs.google.com/file/d/0B_z-FVMhYSKPQ0FQTDF0ZUdSdHc/edit?pli=1 (Uploaded rar file . Select File -> Download)
    Is this a bug ?
    Can we workaround this ...
    highly appreciate any help.

Maybe you are looking for