Is this breaking the MVVM pattern?

We've been having discussions lately as to what is acceptable to put in the code behind of a view, and what should go in the view model. I seem to be a lone voice, and wanted to hear what others have to say, as I haven't yet heard an argument that explains
why I'm wrong, other than "That's not the way we do it," or "Because it breaks the pattern," neither of which are very compelling technical reasons. I'm keen to do it right, but only for the right reasons.
As an example, suppose you want to create a quote for a customer. On the new quote details window, you click a button to open a PickCustomerWindow, from which you choose a customer, and are taken back to the quote details window with the customer selected.
(I know this isn't necessarily the optimal way to do this, but it fits closely with how a lot of our windows work, so please bear with me)
Now, others in the team insist that the "right" way to do this is have the customer list window send out a message with the picked customer, and have the quote details window's view model pick up that message and set the customer. I feel that this
obfuscates the code for no apparent benefit (see below for why).
I would prefer to do it as follows. The quote window's view would have code like the following in the event handler for the appropriate button...
private void PickCustomer_Click(object sender, RoutedEventArgs e) {
PickCustomerWindow pcw = new PickCustomerWindow();
pcw.Closing += (_, __) => {
if (pcw.Customer != null) {
((QuoteDetailsViewModel)DataContext).SetCustomer(pcw.Customer);
pcw.ShowDialog(this);
The SetCustomer() method on the QuoteDetailsViewModel class does the same as a ProcessMessage method would do, in that it gets a customer and does whatever the view model needs to do with it. The difference is that the SetCustomer() method can be accessed directly
by the view that opened the PickCustomerWindow.
If you wanted to simplify this code even more, you could omit the null check and have the view model do that, but I don't think you gain a great deal by that.
In the words of Laurent Bugnion (creator of the MVVM Light Toolkit)...
"Only put in the VM what should be tested by unit tests, shared with other projects, etc. If you have some view-only code, it is perfectly OK to leave it in the view only. If you need to compute some condition deciding if the child window should be
opened or not, it is OK to create a method doing the calculation and returning a value, and to have the view call this method."
I would say that my approach fits very well with his words.
Now, I know that people like to keep code out of the view, and with good reason. However, the code above is so simple that there is no reason not to put it in the view, and you end up with a super-simple process that is easy to follow. If you want to know what
happens when you click the button, you look at the view's code-behind, and can see the whole story. You can put your cursor on the SetCustomer() method and click "Navigate to" and you are taken directly to the code that deals with the customer.
Writing unit tests against this becomes extremely easy. You simply create a customer entity, pass it to the SetCustomer() method and test whatever property of the view model is supposed to reflect the change. Very easy.
Now, compare this approach with sending a message. Having looked at the quote window's view code to see what window gets opened, you need to go to that window, find out what its view model is called, look in the view model and find out what message is sent
out when the customer is picked, find all usages of that message type in the solution, examine each one in turn to find out if it's the one that's relevant to you, and only then can you see what happens to the customer. That's a lot of messing around and a
lot of wasted time to follow a simple process. In the code I showed above, you don't even need to look at the PickCustomerWindow or its view model, as you don't need to know what they do. All you need to know is that the window has a Customer property that
returns the selected customer (or null if one wasn't selected).
Furthermore, in order to write unit tests against the view model, you either have to simulate sending a message, which is a messy experience, or you have to make the ProcessMessage method public, which exposes something that has no reason to be exposed.
A similar question comes up with using the event-to-command pattern, which I also feel is abused in the name of "doing it right." What is the point in the view sending a command to the view model, so that the view model can raise an event to tell
the view to do something? The view already knows what it's supposed to do, so why not just let it do it? Yes, if there is testable code that is involved this needs to go in the view model, but then you just add a public method and allow the view to call that.
Please re-read the end of Laurent Bugnion's words above, and you'll see that this is exactly what he suggests. What is the point of complicating the code with events that have no benefit at all?
I'm all in favour of doing it the "right" way, but only when it really is right. A method that obfuscates the code for no reason isn't what I would call right. By contrast, a method than uses clean, simple and easily testable code, that can be understood
immediately is defintely what I would call right.
Does anyone have any comment one way or the other?
FREE custom controls for Lightswitch! A collection of useful controls for Lightswitch developers (Silverlight client only).
Download from the Visual Studio Gallery.
If you're really bored, you could read about my experiments with .NET and some of Microsoft's newer technologies at
http://dotnetwhatnot.pixata.co.uk/

Hello, thanks for the reply. I appreciate your time, and any comments below should be taken in that light! Yes, I'm going to argue back, but merely because I want to understand the logic here.
>Handling click events of button in the code-behind of a view breaks the pattern
Call me a heretic if you like, but I'm not interested in hearing this. Patterns are not carved in stone, never to be questioned. Patterns are established ways of doing something
that have a specific benefit. (emphasis mine!). If I'm going to obfuscate the code, I want to know what the benefit is. Being able to hold my head up in dev meetings saying I don't break the pattern is not a benefit to me. Writing better code
is, and that's what I'm trying to find out. I want to write better code, even if it breaks the pattern.
>All application logic, for example what happens when you click a button, should be handled by the view model
What is your definition of logic? Maybe it's just my mathematical background, but to me, logic is code that makes decisions, ie testable code. A single line of code that opens a window is not logic, and does not need testing. Why does it need to be handled
by the view model?
More to the point, why does a view model even have to know about windows? A view model should be completely view-agnostic, meaning it could function just as well with any view. The fact that the incoming customer (in my previous example) came from a window
is irrelevant to the view model. All the view model needs to know is that it has been passed a customer. If you start allowing the view model to know about the UI, then you are mixing the layers.
>Using your solution, how are you suppose to unit test what happens when a button is clicked without the view?
You don't! That's precisely my point. The code I showed doesn't need testing,
because it doesn't contain logic. What you need to test is what the view model does with the customer that it was given. How the view model gets the customer is not something (at least in an example as simple as mine) that needs testing.
This is where I really can't see the obsession with shoving everything into the view model. If you have simple UI-related code that doesn't need testing, why not put it where it belongs, ie in the view?
>Using an event aggregator or a messenger doesn't necessarily makes the code or the control flow easier to understand but it  makes the components more loosly coupled to each other
Well, the view already knows about the view model, it has to, or it wouldn't be able to bind stuff to properties on it. I don't see that having the view call a method on its own view model is increasing any coupling. The other way around would be, as it
would prevent you from testing the view model in isolation.
Thanks for the reply, but to be honest, you've not really done much more than repeat the same sort of things I've heard before. I still haven't found any technical justification for the extra complexity. As far as I understand it, the ultimate purpose of
these patterns is to allow you to test each piece in isolation, and the way I suggested provides for that, whilst keeping the code simple. What you are suggesting doesn't seem to offer any technical benefits, such as easier or more thorough testing, but does
make the code significantly more complex.
Please let me repeat that I really do appreciate your time, and am not trying to be rude or arrogant. I really want to understand why people insist on doing the way you are suggesting, but I want to understand it from a technical benefit point of view. What
can I do better this way?
Thanks again. I would be interested to hear what you have to say to my comments.
FREE custom controls for Lightswitch! A collection of useful controls for Lightswitch developers (Silverlight client only).
Download from the Visual Studio Gallery.
If you're really bored, you could read about my experiments with .NET and some of Microsoft's newer technologies at
http://dotnetwhatnot.pixata.co.uk/

Similar Messages

  • I want to plug my apple tv into a projector but i want to break the sound out and plug this in to a sperate audio solution which has 2 phono's. Is there a lead that does this?

    I want to plg my apple tv in to a projector but i want to break the sound out to a seperate audio solution. Is there a lead that I can use? The sound system has 2 x phono connections?

    The sound can already be "broken out" by using the optiocal cable jack. That, of course, assumes your audio input is capable of optical inputs. If not, you might have alook into something like this: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=opt ical+to+rca+converter&tbm=shop

  • Do I use the Brdige pattern for this problem ?

    Hello
    I'm making a music mixer for mobile phones. For the canvas, i divided it up in tiles, to fill
    up with .png images if you want to place a sample in that specific tile. But if you have a phone with no colors and your screen is not big enough, the image is almost all black. So I want to create a different class, to only show a letter or a simple symbol if you can't handle the .png well.
    I read about the bridge pattern, where you encapsulate the implementation in an abstract class and seperate it from the base class with the abstractions. Should I use this pattern for my problem ? I have some doubt because I have multiple implementations (color vs non-color) but I don't have multiple abstractions (a tile to fill up with a symbol or picture).
    Are there other patterns that are more suited for my problem ?
    What about the implementation? Should I see the implementation as only producing the image or symbol, or should i see it as the whole canvas, with the tile system?
    For example, now the tiling looks good on most of the targeted phones. But what if the next generation of mobile phones has a screen with very different dimensions. Wouldn't it be better to incorporate this also in the implementation ?
    Thanks

    What are you trying to do when you say "When I put the password for my apple ID into icloud- it keeps reverting to another password"?
    Where are you doing when you try to enter your password?

  • SharePoint - MS Word Document Only specific pattern allowed. Only data in the following pattern is allowed: ',*\S.*'

    We have a SharePoint 2007 document library setup with a custom template using MS Word. This template is a doc and/or a docx (we have used both and both have the pattern error). We are using the Document Information Panel in the document
    when opening to be filled in. One of the fields - Test - is a multiple lines of text
    field. When we use the Enter key a red dotted line appears. The message for the error appears below:
    Only specific pattern allowed. Only data in the following pattern is allowed: ',*\S.*'
    Does anyone know why this is? We need the ability to use the
    Enter key. We have MS Word at 14.0.4 and it does not have an issue with using the
    Enter key. Any later version of MS Word this issue occurs.
    SharePoint Configuration database version: 12.0.0.6608
    MS Office 2010 14.0.6029.1000
    Chris

    Hi,
    Did you installed some updates recently? Many users encounter this issue after installing KB2817537 or some updates released in Sept.
    This issue occurs because the regular expression used to validate the property doesn't allow for line breaks.
    Fortunately, DPKs attached to this bug have been successfully applied by the build lab.
    We are working on this issue and it will be fixed in future update.
    To work around this issue, please temporarily uninstall the
    KB2817537. If that wouldn’t work, please also uninstall
    KB2760758, KB276041 & KB2760411 and then test the issue again.
    Thanks,
    Steve Fan
    TechNet Community Support
    We
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • How do I use the Match Pattern Function to exclude only 0.000?

    Hi,
    I'm trying to use the mattch pattern function to find the first string in a table thats is >0. My table looks like:
    1,0.000000,0.000 %2007/01/13 00:16:19 196281
    1,0.000000,0.000 %2007/01/13 00:16:22 196282
    1,0.831262,0.000 %2007/01/13 00:17:20 196375
    2,0.811154,0.000 %2007/01/13 00:17:20 196375
    If I us the paremeter "1,[~0]" It doesn't find the line 1,0.831262,0.000... which is the one that I want. I also tried :1,[0-9].+[~0] and that didn't work either. the problem is that the first digit after to 1, isn't allways going to go from 0 to 0.0 sometimes it might go from 0 to 2.??.
    Thanks for the help
    Matt

    "Matt361" <[email protected]> wrote in message news:[email protected]..
    Hi,
    &nbsp;
    I'm trying to use the mattch pattern function to find the first string in a table thats is &gt;0. My table looks like:
    1,0.000000,0.000 %2007/01/13 00:16:19 196281
    1,0.000000,0.000 %2007/01/13 00:16:22 196282
    1,0.831262,0.000 %2007/01/13 00:17:20 196375
    2,0.811154,0.000 %2007/01/13 00:17:20 196375
    If I us the paremeter "1,[~0]" It doesn't find the line 1,0.831262,0.000... which is the one that I want. I also tried :1,[0-9].+[~0] and that didn't work either. the problem is that the first digit after to 1, isn't allways going to go from 0 to 0.0 sometimes it might go from 0 to 2.??.
    &nbsp;
    Thanks for the help
    Matt
    &nbsp;
    Hi,
    1,[~0] matches a "1" a "," and then any character that is not "0".
    1,[0-9].+[~0] matches a "1" a "," and then any character that is "0-9", any number of anything!! (1 or more) and then anything that is not "0". Note that you have to escape a . to match a ".". Like this "\.".
    There is no way to check if there is anything other then a "0" in the match, from within the match pattern function. So I think you won't be able to find a pattern that does the trick.
    Why not use a whileloop to find the first item? Or use the Spreadsheet String To Array, and then compare the desired row or column with the string "0.000000"? (Or replace all ,0.000000, by a string like ",NULL,", then match the pattern?)
    In LabVIEW 8 there is a new Match Regular Expression function. Haven't tried it, but it should be much more powerfull then the Match Pattern function. But also much more complex.
    Regards,
    Wiebe.

  • Link repositioning breaks the code

    This problem was reported on August 4th with no resolution. I have now updated to the latest version (Build 040621) on XP Pro, with Java 1.4.2_04, and the problem persists.
    I can't believe that links on a page cannot be repositioned without breaking the code. I may be doing something wrong but please try the following and tell me what result you get:
    1) - Create a New Project (nav4) - This creates a new page Page1.jsp
    2) - Drop an "output text" : value = Page 1 just to give it a visual title.
    3) - Right click on page1.jsp and select "Page Navigation"
    4) - Right Click on Page1.jsp in the navigation panel and select [New Page] . Create 2 new pages: Page2.jsp, Page3.jsp
    5) - Right Click on Page1.jsp and [Add button], [Add link] (as mentionned in tutorial)
    6) - to create a navigation link from page1.jsp to page2.jsp and page3.jsp, drag from the hyperlink on page1.jsp to page 2.jsp and the button on page1.jsp to page3.jsp
    7) - Double click on page2.jsp to open it into the design view, and drop an "output text" .Change its value to "page 2". Select page navigation again and do the same for page3.jsp . This is to show some kind of "message" on each page.
    Run the application and everything is fine.....
    Now I challenge you to move the Link on page1.jsp and see what happens.... The link won't work anymore... and you'll have to "undo" to get it to work again.
    If there is any other way I can get around this(short of hacking into the code), please let me know, this functionality is extremely important to my project.
    Thank you for your assistance.

    Hi John,
    Please do me a favour.
    After you moved the link, just verify which page the button forwards you to . You will see that after the link has moved,
    both the button and the link take you to the same page. In my case page2.jsp
    This is the content of the log file :
    Log Session: Tuesday, August 31, 2004 4:48:09 o'clock PM PDT
    System Info: Product Version = Java Studio Creator (Build 040621)
    Operating System = Windows XP version 5.1 running on x86
    Java; VM; Vendor = 1.4.2_04; Java HotSpot(TM) Client VM 1.4.2_04-b05; Sun Microsystems Inc.
    Java Home = C:\Sun\Creator\java\jre
    System Locale; Encod. = en_CA; Cp1252
    Home Dir; Current Dir = C:\Documents and Settings\bcb; C:\Sun\Creator\bin
    IDE Install; User Dir = C:\Sun\Creator; C:\Documents and Settings\bcb\.Creator\1_0
    CLASSPATH = C:\Sun\Creator\lib\ext\boot.jar;C:\Sun\Creator\lib\ext\jgraph.jar;C:\Sun\Creator\lib\ext\naming.jar;C:\Sun\Creator\lib\ext\pbclient.jar;C:\Sun\Creator\lib\ext\pbtools.jar;C:\Sun\Creator\lib\ext\rowset.jar;C:\Sun\Creator\lib\ext\smbase.jar;C:\Sun\Creator\lib\ext\smdb2.jar;C:\Sun\Creator\lib\ext\sminformix.jar;C:\Sun\Creator\lib\ext\smoracle.jar;C:\Sun\Creator\lib\ext\smresource.jar;C:\Sun\Creator\lib\ext\smsqlserver.jar;C:\Sun\Creator\lib\ext\smsybase.jar;C:\Sun\Creator\lib\ext\smutil.jar;C:\Sun\Creator\lib\ext\sql.jar;C:\Sun\Creator\lib\ext\sqlx.jar;C:\Sun\Creator\java\lib\dt.jar;C:\Sun\Creator\java\lib\tools.jar
    Boot & ext classpath = C:\Sun\Creator\java\jre\lib\rt.jar;C:\Sun\Creator\java\jre\lib\i18n.jar;C:\Sun\Creator\java\jre\lib\sunrsasign.jar;C:\Sun\Creator\java\jre\lib\jsse.jar;C:\Sun\Creator\java\jre\lib\jce.jar;C:\Sun\Creator\java\jre\lib\charsets.jar;C:\Sun\Creator\java\jre\classes;C:\Sun\Creator\java\jre\lib\ext\dnsns.jar;C:\Sun\Creator\java\jre\lib\ext\ldapsec.jar;C:\Sun\Creator\java\jre\lib\ext\localedata.jar;C:\Sun\Creator\java\jre\lib\ext\sunjce_provider.jar
    Dynamic classpath = C:\Sun\Creator\lib\core.jar;C:\Sun\Creator\lib\openfile-cli.jar;C:\Sun\Creator\lib\openide-loaders.jar;C:\Sun\Creator\lib\openide.jar;C:\Sun\Creator\lib\ravelnf.jar
    [org.netbeans.core.modules #4] Warning: the extension C:\Sun\Creator\modules\ext\sac.jar may be multiply loaded by modules: [C:\Sun\Creator\modules\css.jar, C:\Sun\Creator\modules\insync.jar]; see: http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/classpath.html#class-path
    Turning on modules:
         org.openide/1 [4.26.1 040621]
         org.openide.io [1.1.1 040621]
         org.openide.execution [1.1.1 040621]
         org.openide.compiler [1.2.1 040621]
         org.netbeans.lib.terminalemulator [1.1.1 040621]
         org.openide.src [1.1.1 040621]
         org.openide.loaders [4.11.1 040621]
         org.netbeans.core/1 [1.21.1 040621]
         org.netbeans.core.output/1 [1.1.1 040621]
         org.netbeans.core.compiler/1 [1.4.1 040621]
         org.openide.debugger [1.1.1 040621]
         org.netbeans.modules.j2eeapis/1 [1.0 040621]
         org.netbeans.modules.settings/1 [1.4.1 040621]
         org.netbeans.api.xml/1 [1.3.1.3.6.0 3.6.0 040621]
         org.netbeans.modules.javahelp/1 [2.1.1 040621]
         org.netbeans.modules.schema2beans/1 [1.7.1 040621]
         org.netbeans.core.execution/1 [1.3.1 040621]
         org.netbeans.modules.debugger.core/3 [2.10.1 040621]
         org.netbeans.libs.j2eeeditor/1 [1.1.1 040621]
         org.netbeans.modules.j2eeserver/3 [1.1.2 040701_4]
         org.netbeans.api.java/1 [1.3.1 040621]
         org.netbeans.libs.xerces/1 [1.4.1 2.6.0]
         org.apache.tools.ant.module/3 [3.6.1 040621]
         org.netbeans.modules.debugger.jpda/1 [1.17.1 040621]
         org.netbeans.api.web.dd/1 [1.1.1 1.0 040621]
         com.sun.rave.project/1 [1.0.1 040701_4]
         com.sun.rave.jsfsupport/1 [1.0.1 040701_4]
         org.netbeans.modules.editor/1 [1.14.2 040701_4]
         com.sun.rave.insync/1 [1.0.1 040701_4]
         org.netbeans.modules.diff/1 [1.7.1 040621]
         com.sun.rave.jsfmetadata/1 [1.0 040621]
         com.sun.rave.toolbox/1 [1.0.1 040701_4]
         org.netbeans.modules.classfile/1 [1.8 040621]
         org.netbeans.modules.java/1 [1.16.1 040621]
         com.sun.rave.designer/1 [1.0.1 040701_4]
         com.sun.rave.navigation/1 [1.0.1 040701_4]
         org.netbeans.modules.xml.core/2 [1.1.1.3.6.0 3.6.0 040621]
         org.netbeans.modules.xml.catalog/2 [1.1.1.3.6.0 3.6.0 040621]
         com.sun.tools.appserver/1 [2.0 20040621-1109]
         org.netbeans.core.ui/1 [1.3.1 040621]
         com.sun.rave.servernav/1 [1.0 040621]
         com.sun.rave.licensemgr/1 [1.2 040621]
         org.openidex.util/2 [2.7.1 040621]
         org.netbeans.modules.html/1 [1.12.1 040621]
         org.netbeans.modules.extbrowser/1 [1.3.1 040621]
         org.netbeans.modules.servletapi24/1 [2.0.1 2.0.1 040621]
         org.netbeans.modules.web.jspparser/2 [2.0.1 040621]
         org.netbeans.modules.xml.text/2 [1.1.1.3.6.0 3.6.0 040621]
         org.netbeans.modules.web.core.syntax/1 [1.13.1 040621]
         com.sun.rave.jspsyntaxint/1 [1.0 040621]
         org.netbeans.modules.schema2beansdev/1 [1.1.1 040621]
         com.sun.rave.welcome/1 [1.0 040621]
         org.netbeans.modules.beans/1 [1.11.1 040621]
         com.sun.rave.jwsdpsupport/1 [1.0 040621]
         com.sun.rave.sam/1 [1.0.1 040701_4]
         com.sun.rave.websvc/1 [1.0.1 040701_4]
         org.netbeans.modules.text/1 [1.12.1 040621]
         org.netbeans.modules.image/1 [1.11.1 040621]
         org.netbeans.modules.autoupdate/1 [2.8.1 040621]
         org.netbeans.modules.clazz/1 [1.13.1 040621]
         com.sun.rave.raveupdate/1 [1.0.1 040621]
         com.sun.rave.layoutmgr/1 [1.1 040621]
         org.netbeans.modules.properties/1 [1.11.1 040621]
         org.netbeans.modules.properties.syntax/1 [1.11 040621]
         org.netbeans.core.ide/1 [1.3.1 040621]
         org.netbeans.modules.utilities/1 [1.15.1 040621]
         com.sun.rave.errorhandler.server/1 [0.1 040621]
         com.sun.rave.plaf/1 [0.1 040621]
         com.sun.rave.windowmgr/1 [1.1 040621]
         com.sun.rave.dataconnectivity/1 [1.0.1 040701_4]
         org.netbeans.modules.css/2 [1.1.1.3.6.0 3.6.0 040621]
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! After moving the link here
    *********** Exception occurred ************ at Tue Aug 31 16:51:30 PDT 2004
    java.lang.IllegalArgumentException: Dimensions (width=2147483645 height=2147483645) are too large
         at java.awt.image.SampleModel.<init>(SampleModel.java:112)
         at java.awt.image.SinglePixelPackedSampleModel.<init>(SinglePixelPackedSampleModel.java:124)
         at java.awt.image.Raster.createPackedRaster(Raster.java:757)
         at java.awt.image.Raster.createPackedRaster(Raster.java:460)
         at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
         at java.awt.image.BufferedImage.<init>(BufferedImage.java:250)
         at com.sun.rave.designer.Dragger.initializeImages(Unknown Source)
         at com.sun.rave.designer.Dragger.getImages(Unknown Source)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:30 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:30 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:30 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:30 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:30 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:31 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:31 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:31 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    *********** Exception occurred ************ at Tue Aug 31 16:51:31 PDT 2004
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
         at java.util.ArrayList.RangeCheck(ArrayList.java:507)
         at java.util.ArrayList.get(ArrayList.java:324)
         at com.sun.rave.designer.Dragger.paint(Unknown Source)
         at com.sun.rave.designer.SelectionManager.paint(Unknown Source)
    [catch] at com.sun.rave.designer.DesignerPaneUI.paintSafely(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.paint(Unknown Source)
         at com.sun.rave.designer.DesignerPaneUI.update(Unknown Source)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at com.sun.rave.designer.DesignerPane.paintComponent(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at com.sun.winsys.layout.impl.DnDPanel.paintChildren(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at com.sun.winsys.layout.impl.DnDPanel.paintChildren(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1021)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at com.sun.winsys.layout.impl.DnDPanel.paintChildren(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1021)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at com.sun.winsys.layout.impl.DnDPanel.paintChildren(Unknown Source)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4794)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent.paint(JComponent.java:798)
         at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
         at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
         at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
         at java.awt.Container.paint(Container.java:1312)
         at sun.awt.RepaintArea.paint(RepaintArea.java:177)
         at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
         at java.awt.Component.dispatchEventImpl(Component.java:3678)
         at java.awt.Container.dispatchEventImpl(Container.java:1627)
         at java.awt.Window.dispatchEventImpl(Window.java:1606)
         at java.awt.Component.dispatchEvent(Component.java:3477)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

  • How do I move a .fm to another folder without breaking the .book cross-references?

    Simplified situation:
    I currently have mybook.book containing:
       chapter1.fm
       chap2.fm
       appendixA.fm
       apdxB.fm
    I'd like to reorg the files such that mybook.book contains:
       chapters\chapter1.fm
       chapters\chap2.fm
       appendices\appendixA.fm
       appendices\apdxB.fm
    If I move the files into folders with Windows Explorer, it will of course break the cross-references.  I thought I could simply use right-click Rename on the file enteries within the book in FM to move them, but it won't allow the / or | chars.  How can I accomplish this reorg without breaking the cross-references?
    Thanks,
    Dave

    TWDaveWalker wrote:
    oh well, looks like I'll have to develop a procedure for the staff.  Does anyone have any non-mif suggestions for a smooth procedure?
    Not sure what the problem here is. You need neither a 3rd party plugin nor any MIF editing. Simply do it this way:
    Create the required folders (chapters/appendices) within your current book folder
    Open the book
    Open the chapter files and do a "Save as" into the \chapter subfolder
    Open the appendix files and do a "Save as" into the \appendices subfolder
    Delete the book file entries and re-fill the book with the newly saved files
    Every "Save as..." keeps xrefs intact, including the new path in the document's references. This reqires some steps, yes. But I think it's still better than doing edits to MIF files by someone who is not experienced doing this.
    Edit: Sorry, it's not a easy as I thought. I forgot that this is done in several steps, and previously saved files don't recognize path changes of files saved afterwards. So this is no solution.
    Bernd
    Message was edited by: Be.eM
    Reason: wrong approach, typing faster than thinking

  • How we can limit the number of concurrent calls to a WCF service without use the Singleton pattern or without do the change in BizTalk Configuration file?

    How can we send only one message to a WCF service at a time? How we can limit the number of concurrent calls to a WCF service without use the Singleton pattern or without do the change in BizTalk Configuration file? Can we do it by Host throttling?

    Hi Pawan,
    You need to use WCF-Custom adapter and add the ServiceThrottlingBehavior service behavior to a WCF-Custom Locations.
    ServiceThrottlingBehavior.MaxConcurrentCalls - Gets or sets a value that specifies the maximum number of messages actively processing across a ServiceHost. The MaxConcurrentCalls property specifies the maximum number of messages actively
    processing across a ServiceHost object. Each channel can have one pending message that does not count against the value of MaxConcurrentCalls until WCF begins to process it.
    Follow MSDN-
    http://msdn.microsoft.com/en-us/library/ee377035%28BTS.10%29.aspx
    http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentcalls.aspx
    I hope this helps.
    Rachit
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • Using the BusinessDelegate pattern at lower levels

    I was hoping to elicit some feedback on general J2EE architecture...
    We have an application that we separate into three general tiers: web/client tier, service tier (with 'services' that implement business logic) and a data tier (with 'controllers' which basically implement CRUD (create, read, update, delete) for a single domain object or table). We have this thing called a 'manager' that straddles the service and data tier which also implements CRUD, but at a more coarse grained level. Managers allow us to work with big objects that are actually a composition of small objects.
    Our services and managers are almost always implemented as session beans (stateless) so the client tier uses a "Business Delegate" as per Sun's J2EE patterns to hide the implementation details of those services and managers. So a given call in the system would look like:
    Struts action class -> business delegate -> manager or service -> controller -> entity bean
    Managers and services, when they need to work with persistent data then use controllers to get at that data. Most controllers are currently session beans (stateless), but we are starting to add controllers that implement the DAO pattern.
    I'd like to hide the implementation details of those controllers from the managers and services that use them, though. I hate seeing code in managers/services where we use ServiceLocator to look up a home interface, create the EJB controller and then do method calls.
    My question is whether it's possible and appropriate to use a BusinessDelegate between two session beans such as our 'managers' and 'controllers'. Doing so would make a given call in the system would look like:
    Struts action class -> business delegate -> manager or service -> business delegate -> controller -> entity bean (if used). Would you loose the transaction between manager and controllers (managers always use Required for each method and controllers use Supports - as well, controllers only ever expose a local interface).
    Thanks for any advise/opinions you might have.
    Donald

    In your framework, does each delegate become a single
    InvocationHandler instance
    Yes, exactly.
    with (for instance) a
    constructor that does the EJB lookup and an invoke()
    method?
    EJB lookup is being done by a ServiceLocator.
    Do you have ServiceLocator return the proxy object (I
    know that traditionally ServiceLocators merely return
    EJB home interfaces,
    My does the same. But it's used by EJBDelegateFactory, which creates EJBDelegates.
    EJBDelegates implement InvocationHandler and support InvocationDecorators.
    but I have used them to return
    POJO implementations of interfaces so it becomes a
    kind of implementation factory).
    Nice idea. I have POJOLocator for that.
    Do you have your Proxy object implement the EJB
    interface, rather than creating a new one.
    Yes. The only drawback is that client code needs to catch EJB specific and remote exceptions.
    However it's not a big problem, because there is a decorator which catches all EJB exceptions and throws BusinessDelegateException with a user-friendly error message inside. This means that EJB interfaces need to declare BusinessDelegateException in throws clauses, but it doesnt cause any problems.
    So client code is something like:
    try {
          foo.invokeSomeMethod();
    }  catch (BusinessDelegateException  ex)
         displayErrorMessage(ex.getMsg);
    }   catch  (Exception ex)
          //   can be empty
    I have
    been thinking about creating a new one and then seeing
    if I can change xdoclet's templates to have the EJB
    interface extend this interface.
    I have used this idea, too. I think it's even called a pattern. You can make EJB bean to implement this interface and then you have compile time checking of EJB compliance.
    I remember I had problems with that when some CORBA client stub generator got confused.
    Thanks for any little advise you can provide.
    Maybe I will even put my framework as OS in WEB. If my client will allow me to do it.
    best regards,
    Maris Orbidans

  • This is the best method to install a new version of Studio!

    Do it cleanly. By this I mean create a new fresh startup disk for the install of Studio. Whether for Studio 1 ,2 or 3, trust me. this method will get you to a really stable FCS system.
    1. Backup everything you want to keep if you're using the same drive you've been using as your startup disk. Clone it if you'd like to save time digging around for the files you want to keep. Or buy a new drive for your tower and use it as a startup disk, keeping the earlier one until you've transferred all you need from it. (I have no less than 3 startup disks for my single tower here) One is a 250 gig drive, the other two reside on their own partitions of a second physical drive. I use one system for beta testing, reinstalling the OS each beta test, and one "working" system for daily real work environments, and yet another "backup" system which is there just in case I need it. (but never really do actually).
    2. Load your latest OS disk, and restart your computer from it holding down the c key during a boot up, or selecting it from the startup disk control panel in the apple system prefs.
    3. Once your computer starts up from the OS disk, select "optional installs" from the button you'll see in the window. From there select "erase and install" and install will begin.
    4. After the OS install, run Software update and go all the way with it. There's nada out there that's not OK to install.
    5. Install Studio. If it's an upgrade version, no problem to not install the earlier version you're upgrading from. Just have it's serial number handy because FCS will ask for it as well as the upgrade serial number.
    6. Run Software upgrade again to make sure all of your FCS apps are up to date. INSTALL EVERYTHING that Software Update proposes to install.
    7. You'll be a very happy camper.. it will also feel like your whole computer is faster because of this clean install of the OS you did...
    It's not impossible to get a fine upgrade done without doing it as I've described above, but with the latest round of problems being posted about a new install, I gotta say that this clean method will fix all the problems being posted here and elsewhere. Why even bother taking the risk? What I've posted above will be THE WAY to make sure you're system is running right.
    I've espoused this method of install any time you upgrade your OS (i.e., Tiger to Leopard or the upcoming Leopard to Snow Leopard upgrades about ready to hit us all) OR any time you install a new version of FCS or even a FIRST install of the studio. It's not all that time consuming, and running pro level software really demands that the system install is totally clean.
    I oversee about 75 FCS stations at the Colorado Film School, we do this clean install every semester (4 months) on the systems there, and really have incredibly stable setups. Never really having the problems that get reported all over the forums... not only that, they boot fast, run fast, and just work.
    When software companies test new versions of their software in beta, it's always asked by all software manufacturers to install their beta over a clean fresh OS... always... so there's a lesson here to learn from them, and also a hint: nobody chooses the "upgrade" button for a new version of said software, rather they are testing over CLEAN installs only. Makes perfect sense then to install new versions of software as complicated as this is over a clean new OS install.
    Jerry

    I fully support Jerry's advice. Though it is a little like the old auto repair manual I once had. If you looked in the section under "clutch replacement", it started out like this ...
    *Clutch Replacement procedure.*
    • elevate car - be sure to use jack stands to support vehicle
    • remove engine
    • with clutch pressure plate exposed ....
    Of course, they never spelled out all that was involved in the "remove engine" step. So, in the interest of adding more detail to Jerry's advice on the "erase and install" process for those who have not done it before and might be intimidated - read on.
    • Make a list of all Applications to install. Which ones do you need? Go through your Applications and Utilities folder and note which ones you'll want to reinstall. Note the version.
    (I don't know about you, but I had a shocking number of apps I downloaded, used for a few times and never used again. Forget installing these disused apps.)
    • If you are upgrading from a PPC to an intel machine, you'll want to know if the apps are UB or PPC. Upgrading your PPC software to UB can be a significant cost in a PPC to intel conversion. Know what you are getting into - do a search before installation to see if there is a UB version available. You can find out whether an app is PPC or UB by looking in System Profiler>Software>Applications. This window will also tell you the current installed version number. Generate a .pdf file of it and have everything listed for your records.
    • In the list, note whether is was a download or you have a disk. If it was a download, find the DMG or installer package and copy it to an external firewire drive. Put it in a folder titled - Apps to be installed - or something easily identifiable.
    • If you need to go back to a previous version (e.g. QT 6.5.2) download the dmg file BEFORE you start the installation process.
    • In the list, note if the application is a full install or an UPGRADE. If an upgrade, make sure you have the previous version's disks (as well as the serial numbers - see below).
    If the UPGRADE version does not require the previous version to be present - eg when installing the upgrade version of FCP 7, DO NOT install earlier software. All you'll need is the previous serial number. The way to figure this out is to try to install the newest version. If it needs the previous version present before proceeding, the install process will tell you that.
    Some upgrades will require that a version of the previous app is on the disk. If this is the case, when you install the first version, simply install the minimum so the app will be on the hard drive. You will need to do this because there will be NOTHING on the disk after you do your clean erase.
    • Referencing your list, find ALL your disks before you start. This includes previous versions if you are unsure whether they will be needed.
    • Spend some time looking through this forum for Professional Application installation issues. The classic example is a conflict between Logic and FCP. Install FCP first and you'll have no issues.
    • Sort your list into an installation sequence. Lay out your disks in that order.
    • Referencing the list, make sure you have ALL your serial numbers including those you've downloaded. I've purchased a number of programs on line and the only documentation of the serial number was an email. All those are kept in a dedicated folder in Mac Mail. For serial numbers that arrived via electronic means, use cut and paste instead of re-typing whenever possible. This will prevent errors in transcription.
    In making the list, TEXT EDIT works ok, (I use Excel). Text edit has the benefit of being easily readable on any mac. Print the list out for reference, put a copy on a flash drive or a firewire drive where you can access it to cut and past serial numbers during the installation process.
    • Recognize this is going to take some time. Ranting, drinking too much coffee, swearing, sitting in front of the computer watching the progress bar, etc will not make things go faster. All it will to is put you in a really bad frame of mind. Do it over a weekend when you can be multitasking. While you are cleaning off the mountains of paper on your desk or raking the yard, you can take regular breaks to check on progress.
    Process -
    • Download Carbon Copy Cloner or one of the other backup utilities and do a full backup of your existing system drive to an external firewire drive. Make the drive bootable. *Do not* cheap out on this as this is your insurance policy. If you forget something or can not find a serial number, you often can find it and copy it from the backup system to the newly installed version. Or, if things go horribly wrong, you can simply copy the old system back to your computer and pick up where you left off.
    If you have a MacPro or G5 tower, an alternative to cloning your existing system disk is to pick up a new hard drive to use as the clean new system disk. Your existing system disk will be the clone.
    • Once you have gathered and organized all the materials and backed up the drive or installed the new system drive ...
    • Insert your OSX installation disk and boot the computer from the disk (Jerry explains how)
    • Erase the hard drive. Use the ZEROs option as this will map out any bad sectors. This will take time. See the note above.
    • Install the OS. If it is an upgrade install, see the note above regarding upgrade installs. Repair Permissions and then run the updates. Repair Permissions.
    • Install your applications following your list. Make sure to Repair Permissions after each install and update..
    Have fun, be prepared for a few minor glitches. If you multitask, you can get the garage/ or office cleaned out and your computer rebuilt. In all honesty, this process took all weekend plus time in the next week as I discovered apps that needed additional updates, configuration settings, etc. No doubt it would have been faster if I was sitting at the console the whole time, but I was able to get the office cleaned up and organized (which also makes ME much faster). Overall it was a very slick process.
    When you have a fully functioning system again (you have tested all applications and everything works), CLONE the new system and put your info, your notes and the disks in a safe place - once you've done this once, why go through the pain of organizing this stuff again ...
    Now, rejoice in a much faster machine with a lot more free disk space.
    Cheers,
    x

  • I need to break the install process

    Hi,
    I recently tried to run an archive and install on my G5 Mac - Dual 2ghz - 1 gb ram OSX Version 10.4.11.
    Unfortunately, I am missing the "correct" version of disk 2. As a result, I cannot continue with the install. Nor can I do anything with this drive, since it goes straight into the installer and asks for disk 2.
    I can put the drive in another identical Mac G5 and see all of the data on the drive including the "Previous Versions" folder, and the "new" system folder.
    If I delete the "new" system folder and put it back into Mac-A I get a Kernal panic - missing drivers screen.
    So, either
    A: How do I break the boot process to start over with a different set on the original machine; or
    B: what file do I need to delete from the hard drive (using the second machine) to allow me to restart the process (using a different OS ver.?
    Thanks!

    You really can't break the installation process midstream. You can attempt to fix a mistaken install using an Archive and Install, and combo update back to the version you were at last, but that's dependent on their being enough space on your system*:
    http://www.macmaps.com/diskfull.html
    After an archive and install, you can migrate data back to your new system that is usable. Frequently added drivers and plugins are not usable, but applications may be usable from a previous system.
    This is why it is so important you backup your data before installing anything*:
    http://www.macmaps.com/backup.html
    If you haven't you can backup even a shoddy system and restore elements such as documents, but don't expect anything else to be usable.
    - * Links to my pages may give me compensation.

  • How to fix "Modifying a column with the 'Identity' pattern is not supported"

    When doing Code First Migrations my mobile service always errors in the seed method with: 'Modifying a column with the 'Identity' pattern is not supported. Column: 'CreatedAt'. Table: 'CodeFirstDatabaseSchema.Methodology' for the CreatedAt column. All my
    models inherit from EntityData. 
    // Sample model
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using Microsoft.WindowsAzure.Mobile.Service;
    namespace sbp_ctService.Models
    public class Methodology : EntityData
    public Methodology()
    this.Scenarioes = new List<Scenario>();
    public string Id { get; set; }
    [Required]
    [StringLength(50)]
    public string EntryMethod { get; set; }
    [Required]
    [StringLength(50)]
    public string TestDirection { get; set; }
    [Required]
    [StringLength(50)]
    public string PassCriteria { get; set; }
    [Required]
    [StringLength(50)]
    public string Dependency { get; set; }
    public bool ExtraInfo { get; set; }
    public virtual ICollection<Scenario> Scenarioes { get; set; }
    And in my Configuration.cs file during an update here's my seed method:
    protected override void Seed(sbp_ctService.Models.sbp_ctContext context)
    // This method will be called after migrating to the latest version.
    context.Methodologies.AddOrUpdate(
    m => m.Id,
    new Methodology { Id = "Methodology1", EntryMethod = "P/F", PassCriteria = "P/F", Dependency = "None", ExtraInfo = false, TestDirection = "Round" },
    new Methodology { Id = "Methodology2", EntryMethod = "P/F", PassCriteria = "Best", Dependency = "None", ExtraInfo = false, TestDirection = "Round" },
    new Methodology { Id = "Methodology3", EntryMethod = "P/F", PassCriteria = "Best", Dependency = "None", ExtraInfo = false, TestDirection = "In/Out" },
    new Methodology { Id = "Methodology4", EntryMethod = "P/F", PassCriteria = "Best", Dependency = "None", ExtraInfo = false, TestDirection = "Out" }
    For some reason on an update the CreatedAt field is created and given a value of null. So of course on an insert/update it will error because CreatedAt is an Identity field.
    I've tried to configure the modelBuilder in my context to tell it that CreatedAt is an identity field, but that still doesn't work.
    modelBuilder.Entity<Methodology>()
    .Property(m => m.CreatedAt)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    So far the only way to fix this is by commenting out my Seed data, but it's not a fix. I've seen other solutions where you can force it to not serialize certain fields, but I don't know if those solutions apply.

    So I think this occurs because you might have created the database (Code-first) with POCOs that didn't have the CreatedAt field in them. I think that's what I did and the easiest way to fix it for me was to delete my database and re-create it with my POCOs
    inheriting from Entity Data from the very beginning. We were still in development so it worked out for us but I know some people might not be able to do that. Here's what my table looks like after it was created correctly:
    USE [database_name]
    GO
    /****** Object: Table [sbp_ct].[Methodologies] Script Date: 2/24/2015 9:48:45 PM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [schema_name].[Methodologies] (
    [Id] NVARCHAR (128) NOT NULL,
    [EntryMethod] NVARCHAR (50) NOT NULL,
    [TestDirection] NVARCHAR (50) NOT NULL,
    [PassCriteria] NVARCHAR (50) NOT NULL,
    [Dependency] NVARCHAR (50) NOT NULL,
    [ExtraInfo] BIT NOT NULL,
    [Version] ROWVERSION NOT NULL,
    [CreatedAt] DATETIMEOFFSET (7) NULL,
    [UpdatedAt] DATETIMEOFFSET (7) NULL,
    [Deleted] BIT NOT NULL,
    [Name] NVARCHAR (MAX) NULL
    GO
    CREATE CLUSTERED INDEX [IX_CreatedAt]
    ON [schema_name].[Methodologies]([CreatedAt] ASC);
    GO
    ALTER TABLE [schema_name].[Methodologies]
    ADD CONSTRAINT [PK_schema_name.Methodologies] PRIMARY KEY NONCLUSTERED ([Id] ASC);
    Does yours look something like that?

  • How do I use a path as an argument without breaking the -classpath option?

    How do I use a path as an argument without breaking the -classpath option?
    I have the following Korn Shell Script:
    #!/bin/ksh
        CSVFILE=/EAIStorageNumbers/v1/0001/weekly05222006.csv
        OUTPUTFILE=/EAIStorageNumbers/v1/0001/08000000.txt
        PAGEMBR=0800F341
        cd /EAIStorageNumbers/v1/bin/
        java -classpath com.dtn.refinedfuels.EAIStorageNumbers $CSVFILE $OUTPUTFILE $PAGEMBRWhen I run the shell script, I return the following error:
    Exception in thread "main" java.lang.NoClassDefFoundError: /EAIStorageNumbers/v1/0001/weekly05222006/csv
    Thus, the -classpath option sees the first argument as a classpath. When I remove the -classpath option, I get a different error, which is another issue:
    Exception in thread "main" java.lang.NoClassDefFoundError: au/com/bytecode/opencsv/CSVReader
    at com.dtn.refinedfuels.EAIStorageNumbers.main(Unknown Source)
    Thoughts or suggestions on how I can get the -classpath option to work with the defined Korn Shell Script variables would be greatly appreciated.

    I think you're misunderstanding the classpath argument. This tells java where to look to find your classes. The argument you're supplying looks like the class that you want java to run. Run something like this: java -classpath $MY_CLASS_DIR my.package.MyClass arg1 arg2 arg3.

  • Why does reindex documents at Server in the Configuration Manager break the help system?

    Background:
    So, I have a nice hosted help system on Server 9. I'm using the Access database since it's a light load project. It works OK. All admin features work OK (except groups and users bug, unrelated), including reports on search and usage. So, I have been having a devil of a time making a particular search term work in my project: UTS. It's an acronym for a system at my work, and it's important that users be able to search on it. UTS is in several Heading 1s. It's not in the stop list as a typo. Just to be sure, I deleted the whole stop list. I added "UTS" as a topic keyword. It still refuses to find any results. Also, I've noticed some other peculiarities with search: the "context" displayed below the search result is supposed to show the word you searched for in its context, but it never does in my search results. It just shows the first words of the document it's listed as a hit in search. The search is not bad, but these two bugs were odd enough to me to start rooting around for solutions.
    So, I run Server 9 on Windows Server 2008 R2 with Tomcat 7 and JDK 7u17.
    The problem:
    I noticed in all the Server documentation that Adobe crows about the wonderful full text search powered by Lucene, and how it's checked "on" by default in all contexts. It's not in mine. When I check "reindex documents at server," it breaks the project. Literally--Server can't find the project anymore, web calls come back with no answer. Uncheck the box, A-OK. So, why is this wonderful search technology not available to me? Is it because it's not available when using default Access? Or is something else going on here?
    many thanks in advance.
    David Morgan
    Robohelp HTML11/Server 9 user

    The problem is that my data collection software (VisualPlant by EMT) is unable to browse to the National Instruments.LookoutOPCServer. When I added an Identification category to the registry entry for the lookout OPC server I was able to connect but with some odd behavior. My setup is:
    2 machines each running Win NT4 SP6a. One machine is running Lookout as well as several other OPC servers. The other is running my data collection software. I am able to connect to lookout using several client apps on my data collection machine (Kepware's Quick Client, and Matrikon's Client), however my data collection software (VisualPlant) cannot see Lookout. Using the NI server explorer and viewing the properties of all of my OPC servers I noticed that Lookout was the on
    ly one listed that did not have a CatID. By modifying the registry and adding the ID's listed in my original note I was able to connect using VisualPlant, however this exibited some odd behavior. It appears that adding this setting prevents multiple OPC connections to Lookout. If you have any suggestions I would greatly appreciate it.
    Thanks.

  • How do you break the cycles in "connect by nocycles" query.

    I looked at the documentation of the oracle hierarchical queries to see if there is a deterministic way of breaking the cycles.
    http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/queries003.htm
    I understand that plain connect by query fails if there are cycles in the data, this can be over come by using the nocycles clause. But how does oracle handle the cycles if it finds one, is there a deterministic way of breaking the cycles, or is random? If it is deterministic, Is there a sophisticated algorithm you use to break the cycles?
    My sample query is as shown below:
    SELECT ename "Employee", CONNECT_BY_ISCYCLE "Cycle",
    LEVEL, SYS_CONNECT_BY_PATH(ename, ’/’) "Path"
    FROM scott.emp
    WHERE level <= 3 AND deptno = 10
    START WITH ename = ’KING’
    CONNECT BY NOCYCLE PRIOR empno = mgr AND LEVEL <= 4;
    Thanks,
    Paul

    Hi, Paul,
    849708 wrote:
    Thanks for the very detailed explanation Frank.
    It is interesting that the cycles are not broken at the time of the creation of the hierarchies, but at the time of the traversal.The relationship is only defined in the CONNECT BY clause of a query. When you create and populate tables, you don't indicate in any way that certain columns will be used in a CONNECT BY clause. You're free to use any columns you want when you write the query. You can use different columns and different relationships in different queries.
    This leads me to one more question:
    Lets say there are multiple routes from a given ancestor node to a decedent node, what would be the value of PATH pseudo column. Does it consider the shortest path or the longest path? If the two routes are of the same length? which would be used?The same node can appear more than once as a descendant of the same ancestor. All paths that satisfy the CONNECT BY clause (and the WHERE clause, if there is one) will be included. For example, the following query shows how Prince William is related to one of his ancestors, Anna Sophie (1700-1780):
    SELECT     LEVEL
    ,     SYS_CONNECT_BY_PATH (name, ' \ ')     AS path
    FROM     royal
    WHERE     name     = 'Anna Sophie of Schwarzburg-Rudolstadt'
    START WITH     name     = 'William of Wales'
    CONNECT BY     id     IN (PRIOR mother_id, PRIOR father_id)
    ;The genealogy table I used showed 8 different line of descent, ranging from 10 to 12 generations:
    LEVEL PATH
       11  \ William of Wales \ Charles, Prince of Wales \ Elizabeth II \ George
           VI \ George V \ Edward VII \ Victoria \ Victoria of Saxe-Coburg-Saalf
          eld \ Franz Frederick of Saxe-Coburg-Saalfeld \ Ernst Frederick of Sax
          e-Coburg-Saalfeld \ Anna Sophie of Schwarzburg-Rudolstadt
       12  \ William of Wales \ Charles, Prince of Wales \ Elizabeth II \ George
           VI \ George V \ Edward VII \ Albert of Saxe-Coburg and Gotha \ Louise
           of Saxe-Gotha-Altenburg \ Louise Charlotte of Mecklenburg \ Frederick
           Francis I of Mecklenburg \ Charlotte Sophie of Saxe-Coburg-Saalfeld \
           Anna Sophie of Schwarzburg-Rudolstadt
       11  \ William of Wales \ Charles, Prince of Wales \ Elizabeth II \ George
           VI \ George V \ Edward VII \ Albert of Saxe-Coburg and Gotha \ Ernest
           I, Duke of Saxe-Coburg and Gotha \ Franz Frederick of Saxe-Coburg-Saa
          lfeld \ Ernst Frederick of Saxe-Coburg-Saalfeld \ Anna Sophie of Schwa
          rzburg-Rudolstadt
       11  \ William of Wales \ Charles, Prince of Wales \ Elizabeth II \ George
           VI \ George V \ Alexandra of Denmark \ Louise of Hesse-Kassel \ Louis
          e Charlotte of Denmark \ Sophia Frederica of Mechlenburg-Schw. \ Charl
          otte Sophie of Saxe-Coburg-Saalfeld \ Anna Sophie of Schwarzburg-Rudol
          stadt
       11  \ William of Wales \ Charles, Prince of Wales \ Philip, Duke of Edinb
          urgh \ Alice of Battenberg \ Montbatten, Victoria \ Alice, Duchess of
          Hesse \ Victoria \ Victoria of Saxe-Coburg-Saalfeld \ Franz Frederick
          of Saxe-Coburg-Saalfeld \ Ernst Frederick of Saxe-Coburg-Saalfeld \ An
          na Sophie of Schwarzburg-Rudolstadt
       12  \ William of Wales \ Charles, Prince of Wales \ Philip, Duke of Edinb
          urgh \ Alice of Battenberg \ Montbatten, Victoria \ Alice, Duchess of
          Hesse \ Albert of Saxe-Coburg and Gotha \ Louise of Saxe-Gotha-Altenbu
          rg \ Louise Charlotte of Mecklenburg \ Frederick Francis I of Mecklenb
          urg \ Charlotte Sophie of Saxe-Coburg-Saalfeld \ Anna Sophie of Schwar
          zburg-Rudolstadt
       11  \ William of Wales \ Charles, Prince of Wales \ Philip, Duke of Edinb
          urgh \ Alice of Battenberg \ Montbatten, Victoria \ Alice, Duchess of
          Hesse \ Albert of Saxe-Coburg and Gotha \ Ernest I, Duke of Saxe-Cobur
          g and Gotha \ Franz Frederick of Saxe-Coburg-Saalfeld \ Ernst Frederic
          k of Saxe-Coburg-Saalfeld \ Anna Sophie of Schwarzburg-Rudolstadt
       10  \ William of Wales \ Charles, Prince of Wales \ Philip, Duke of Edinb
          urgh \ Andrew of Greece and Denmark \ George I of Greece \ Louise of H
          esse-Kassel \ Louise Charlotte of Denmark \ Sophia Frederica of Mechle
          nburg-Schw. \ Charlotte Sophie of Saxe-Coburg-Saalfeld \ Anna Sophie o
          f Schwarzburg-RudolstadtBy the way, SYS_CONNECT_BY_PATH is a function, not a pseudo-column. Pseudo-columns don't take arguments.
    I could have tested all this myself, but currently I do not have access to the database. Is there a publicly available database (through ssh) which I can use in the mean time :)You can download Oracle Express Edition.
    http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
    It's free if all you're using it for is learning.
    You can also get a free workspace in an Oracle-hosted database at apex.oracle.com.
    Edited by: Frank Kulash on Apr 4, 2011 6:51 PM

Maybe you are looking for

  • Migrate 9.2.0.7 from 32-bit  to 10.2.0.4 on 64-bit

    Hi All, how can i migrate Oracle 9.2.0.7 database from Suse Linux 32-bit to Oracle 10.2.0.4 on OUL 64-bit? Our database is about 120 Gb and i thing that exp/imp will do it very slow. What is the best and shortest way?

  • How to Display the SAVE  file name dialogue in Forms 6i

    Dear All, Just like we use Get_file_Name to display the MS Open file dialogue.. how do we display the SAVE file dialogue in forms..?? whats the function name??? regards, Sidhant

  • Pages comments panel open with every document

    For whatever reason, Pages keeps opening up the comment panel on the left side of my Pages documents when I open them, even when there isn't a single comment added to the Pages document. I have to manually close the comment box and then save the file

  • Delete download after playing on iPhone?

    All seems to be going well with iCloud and Music Match. However, once on iPhone after playing seems to me I should be able to delete songs to keep it from filling up. Right now expermenting on iPad where I don't store music before going to my iPhone

  • 4 extensions will not load xmarks, flagfox, 2 others, always get error messdagwe

    Error: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIFile.copyTo]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: file:///C:/Program%20Files/Mozilla%20Firefox/components/nsExtensionM