// Path: src/libbluray/bdj/java/org/davic/net/Locator.java
// public class Locator implements javax.tv.locator.Locator {
//     public Locator(String url) {
//         this.url = url;
//     }
// 
//     public String toString() {
//         return url;
//     }
// 
//     public boolean hasMultipleTransformations() {
//         return false;
//     }
// 
//     public String toExternalForm() {
//         return url;
//     }
// 
//     public boolean equals(Object obj) {
//         if (obj == null || !(obj instanceof Locator) || url == null)
//             return false;
// 
//         Locator locator = (Locator)obj;
//         return toExternalForm().equals(locator.toExternalForm());
//     }
// 
//     protected String url;
// }
// 
// Path: src/libbluray/bdj/java/org/videolan/BDJUtil.java
// public class BDJUtil {
//     /**
//      * Make a five digit zero padded string based on an integer
//      * Ex. integer 1 -> string "00001"
//      *
//      * @param id
//      * @return
//      */
//     public static String makeFiveDigitStr(int id)
//     {
//         if (id < 0 || id > 99999) {
//             System.err.println("Invalid ID: " + id);
//             throw new IllegalArgumentException("Invalid ID " + id);
//         }
//         String s = "" + id;
//         while (s.length() < 5) {
//             s = "0" + s;
//         }
//         return s;
//         /*
//         DecimalFormat fmt = new DecimalFormat();
//         fmt.setMaximumIntegerDigits(5);
//         fmt.setMinimumIntegerDigits(5);
//         fmt.setGroupingUsed(false);
// 
//         return fmt.format(id);
//         */
//     }
// 
//     /**
//      * Make a path based on the disc root to an absolute path based on the filesystem of the computer
//      * Ex. /BDMV/JAR/00000.jar -> /bluray/disc/mount/point/BDMV/JAR/00000.jar
//      * @param path
//      * @return
//      */
//     public static String discRootToFilesystem(String path)
//     {
//         String vfsRoot = System.getProperty("bluray.vfs.root");
//         if (vfsRoot == null) {
//             System.err.println("discRootToFilesystem(): disc root not set !");
//             return path;
//         }
//         return vfsRoot + path;
//     }
// }


import org.videolan.BDJUtil;
import org.videolan.Logger;
import org.davic.net.Locator;
import org.davic.net.InvalidLocatorException;
            secondaryVideoNum = num;
            url = getUrl();
        }
    }

    public void setPGTextStreamNumber(int num) {
        if ((num >= 0) && (num != textStreamNum)) {
            textStreamNum = num;
            url = getUrl();
        }
    }

    protected String getUrl() {
        String str = "bd://";

        if (disc != null && disc != "") {
            str += disc;
            if (titleNum >= 0) {
                str += ".";
            }
        }

        if (titleNum >= 0) {
            str += Integer.toString(titleNum, 16);
            if (jar >= 0 || playList >= 0 || sound >= 0) {
                str += ".";
            }
        }

        if (jar >= 0) {
// Path: src/libbluray/bdj/java/org/davic/net/Locator.java
// public class Locator implements javax.tv.locator.Locator {
//     public Locator(String url) {
//         this.url = url;
//     }
// 
//     public String toString() {
//         return url;
//     }
// 
//     public boolean hasMultipleTransformations() {
//         return false;
//     }
// 
//     public String toExternalForm() {
//         return url;
//     }
// 
//     public boolean equals(Object obj) {
//         if (obj == null || !(obj instanceof Locator) || url == null)
//             return false;
// 
//         Locator locator = (Locator)obj;
//         return toExternalForm().equals(locator.toExternalForm());
//     }
// 
//     protected String url;
// }
// 
// Path: src/libbluray/bdj/java/org/videolan/BDJUtil.java
// public class BDJUtil {
//     /**
//      * Make a five digit zero padded string based on an integer
//      * Ex. integer 1 -> string "00001"
//      *
//      * @param id
//      * @return
//      */
//     public static String makeFiveDigitStr(int id)
//     {
//         if (id < 0 || id > 99999) {
//             System.err.println("Invalid ID: " + id);
//             throw new IllegalArgumentException("Invalid ID " + id);
//         }
//         String s = "" + id;
//         while (s.length() < 5) {
//             s = "0" + s;
//         }
//         return s;
//         /*
//         DecimalFormat fmt = new DecimalFormat();
//         fmt.setMaximumIntegerDigits(5);
//         fmt.setMinimumIntegerDigits(5);
//         fmt.setGroupingUsed(false);
// 
//         return fmt.format(id);
//         */
//     }
// 
//     /**
//      * Make a path based on the disc root to an absolute path based on the filesystem of the computer
//      * Ex. /BDMV/JAR/00000.jar -> /bluray/disc/mount/point/BDMV/JAR/00000.jar
//      * @param path
//      * @return
//      */
//     public static String discRootToFilesystem(String path)
//     {
//         String vfsRoot = System.getProperty("bluray.vfs.root");
//         if (vfsRoot == null) {
//             System.err.println("discRootToFilesystem(): disc root not set !");
//             return path;
//         }
//         return vfsRoot + path;
//     }
// }


// Path: src/libbluray/bdj/java/org/bluray/net/BDLocator.java
import org.videolan.BDJUtil;
import org.videolan.Logger;
import org.davic.net.Locator;
import org.davic.net.InvalidLocatorException;

            secondaryVideoNum = num;
            url = getUrl();
        }
    }

    public void setPGTextStreamNumber(int num) {
        if ((num >= 0) && (num != textStreamNum)) {
            textStreamNum = num;
            url = getUrl();
        }
    }

    protected String getUrl() {
        String str = "bd://";

        if (disc != null && disc != "") {
            str += disc;
            if (titleNum >= 0) {
                str += ".";
            }
        }

        if (titleNum >= 0) {
            str += Integer.toString(titleNum, 16);
            if (jar >= 0 || playList >= 0 || sound >= 0) {
                str += ".";
            }
        }

        if (jar >= 0) {
            str += "JAR:" + BDJUtil.makeFiveDigitStr(jar);