Different Equals !

have a look for this code :-
!http://img40.imageshack.us/img40/1856/mgrm.png!
I'm not understanding the point from the changing of the results due to differ of equals between employee_id and manager_id !
any explanation ?!

Notice how in your first example your are joining on the manager_id column from the table aliased with "e" and then restricting that result set with e.manager_id = 149? Well in your second scenario you are joining on the employee_id on the table aliased with "e" but trying to restrict the result set on that same table, "e", with manager_id. So unless, an employee is its own manager, you wouldn't get results back. There is nothing really wrong with the join condition its the predicate that's the issue. You probably meant m.manager_id = 149.
If you post your full table structure and some records we can help you further.
HTH!

Similar Messages

  • Several different equals methods

    Hi,
    I want to compare two different sets with eachother. The Set contains objects with a number of strings and Integers, and some of these need to be equal in order to find a match between the two different Sets. This differs from the "natural order" or the actual equal-value for the two objects, so I don�t want to implement Comparable and use the equals method directly in my Objects since I do not wat to mess with the "truth".
    I tried to used Comparator, but the equals(Object obj) method only provides one of the two objects I need to compare, and the compare(Object obj1, Object obj2) is good, but should I use it to compare two objects from two DIFFERENT Collections. It seems the compare method is mostly used for sorting, and I don�t care about sorting at this point.
    Set<MyObject> set1;
    Set<MyObject> set2;
    //compare all the objects in set 1 to all objects in set2 AND, if there is a match do:
    myObjectFromSet1.setACertainValue(myObjectFromSet2.getACertainValue);The "ACertainValue" is of course not included in the comparison, since in set1, all the "ACertainValues" are empty, but I need to pick the value from its "equal" object from set2.

    I compare them field by field in my object - strings
    and Integers - (except for one field : position).
    All must match to call them "equal". Then I want to
    set that field (position) in the set that doesn�'t
    have that info yet and pick the value from the other
    set (where there is ONE corresponding Object
    available only). After this the two objects from each
    set are "really equal".
    There might be objects available without a match, but
    those I will handle seperately.
    Thanks for taking you time, it is really appriciated.No problem. I think I understand what you mean, here's yet another little demo:import java.util.*;
    public class Main {
        public static void main(String[] args) {
            MyObject[] array1 = {new MyObject(1, "A", new Integer(11)),
                                 new MyObject(2, "B", new Integer(22)),
                                 new MyObject(3, "C", new Integer(33))};
            Set<MyObject> set1 = new HashSet<MyObject>(Arrays.asList(array1));
            MyObject[] array2 = {new MyObject(1, "A"),
                                 new MyObject(2, "B"),
                                 new MyObject(3, "C")};
            Set<MyObject> set2 = new HashSet<MyObject>(Arrays.asList(array2));
            System.out.println("Before\nset1 : "+set1);
            System.out.println("set2 : "+set2);
            List<MyObject> list1 = new ArrayList<MyObject>(set1);
            for(MyObject mo2 : set2) {
                int index = list1.indexOf(mo2);
                if(index != -1) {
                    MyObject mo1 = list1.get(index);
                    if(mo2.position == null) {
                        mo2.position = mo1.position;
                    } else {
                        mo1.position = mo2.position;
            System.out.println("\nAfter\nset1 : "+set1);
            System.out.println("set2 : "+set2);
    class MyObject {
        protected Integer id, position;
        protected String str;
        public MyObject(int id, String str) {
            this(id, str, null);
        public MyObject(int id, String str, Integer position) {
            this.id = id;
            this.str = str;
            this.position = position;
        public boolean equals(Object o) {
            MyObject that = (MyObject)o;
            return this.id == that.id && this.str.equals(that.str);
        public int hashCode() {
            return (31*this.id) ^ (37*this.str.hashCode());
        public String toString() {
            return "{id="+this.id+", str="+this.str+", position="+this.position+"}";
    }Produces the following output:Before
    set1 : [{id=3, str=C, position=33}, {id=2, str=B, position=22}, {id=1, str=A, position=11}]
    set2 : [{id=3, str=C, position=null}, {id=2, str=B, position=null}, {id=1, str=A, position=null}]
    After
    set1 : [{id=3, str=C, position=33}, {id=2, str=B, position=22}, {id=1, str=A, position=11}]
    set2 : [{id=3, str=C, position=33}, {id=2, str=B, position=22}, {id=1, str=A, position=11}]

  • Problem with Equals/Contains

    Hello,
    I am learning .net c# and i wanted to rewrite Stack collection.
    But when i tried rewriting Contains method, i think i found little bug.
    I cant compare two instances of class.
    I created class Test and i put it into stack, then i made new instance of class Test and i tried do Contains, how i found out it always returns False. Same is with Equals, ReferenceEquals and ==. Why is this happening? Both classes contains same items with
    same things. Why it isnt True?
    Thanks for answer.

    Comparison and equality are one of the things that are done in an strange way in .NET.
    First thing to pay attention is that, there is difference between equality comparison and less than/greater than comparison. On the whole, equality is used in searching and looking up while comparison is used in sorting. Equality comparison is always doable.
    You compare whether two things are equal. But less than/greater than might not necessarily possible in all situations.
    There are also two general ways when comparing two things (whether for equality or less than/greater than):
    Objects themselves perform comparison on each other
    Another object -and external object- performs comparison on them
    In first approach, we call the Equals() method an object, passing it the other object we intend to compare its equality with, and the former object performs equality comparison himself and sees whether it is equal to the given object or not. While Equals()
    method provides us a good point to override comparison, the limitation is that, we can override Equals() only once in a class, while there might be different equality contexts available for comparison.
    For example in a collection of Person objects, one time we might compare equality based on Lastname and another time we might want to do it based on Birthdate. Using Equals() method regretfully gives us an only chance for comparison. Also, it corrupts the
    equality rule of all of our objects. Apparently we don't want to change the equality algorithm of our objects, one of which is equality comparison based on reference that is done intrinsically by object base class. Also, what if we don't access to the source
    code of the class we are using its instances in our application?! Let's not think about such a frightening situation (in that case, inheritance is an ultimate shot, however, not the only shot, as we will see soon). This leads us to the other approach.
    In the second approach we use another object as a judge that performs comparison (whether it be equality or less than/greater than) and proclaims the result. Because the judge object is external and can be any object, we will potentially have numerous
    choices at hand to use for comparison. One time we might use a LastNameEqualityComparer object, another time use a BirthdateEqualityComparer and another time use whatever equality comparer we want. We have total freedom.
    Now, we get to the point where I said there is strange or anomaly behavior in .NET collections regarding comparison.
    Some collections such as Dictionary<TKey, TValue> provides us a way to pass them an equality comparer object in their constructors when we are creating an instance of them.
    public Dictionary(IEqualityComparer<TKey> comparer)
    exmaple: https://msdn.microsoft.com/en-us/library/ms132072(v=vs.110).aspx
    public class Example
    public static void Main()
    // Create a new Dictionary of strings, with string keys
    // and a case-insensitive comparer for the current culture.
    Dictionary<string, string> openWith =
    new Dictionary<string, string>(
    StringComparer.CurrentCultureIgnoreCase);
    // Add some elements to the dictionary.
    openWith.Add("txt", "notepad.exe");
    openWith.Add("bmp", "paint.exe");
    openWith.Add("DIB", "paint.exe");
    openWith.Add("rtf", "wordpad.exe");
    // Try to add a fifth element with a key that is the same
    // except for case; this would be allowed with the default
    // comparer.
    try
    openWith.Add("BMP", "paint.exe");
    catch (ArgumentException)
    Console.WriteLine("\nBMP is already in the dictionary.");
    // List the contents of the sorted dictionary.
    Console.WriteLine();
    foreach( KeyValuePair<string, string> kvp in openWith )
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
    kvp.Value);
    But some collections don't provides us a way in their constructors to pass them a custom comparer. Unfortunately your case, Stack, is among them and Stack doesn't have such a constructor.
    If we read the MSDN documentation of the Contains() method in the non-generic Stack, and generic Stack<T> classes, we get the following sayings that reveals everything:
    non-generic Stack.Contains(): this method determines equality by calling Object.Equals.
    generic Stack<T>.Contains(): this method determines equality using the default equality comparer EqualityComparer<T>.Default for T, the type of values in the list.
    If we use a non-generic Stack class, our only choice is overriding Equals() in the class of our object, as Andy ONeill mentioned before. But if we use non-generic Stack<T>, .NET team generously favored us one other tiny choice. We can implement the
    IEquatable<T> interface in our class that has an Equals() method and implement the algorithm of our new equality comparison in this Equals() method. Why we should do that? Because that is what EqualityComparer<T>.Default does! See MSDN documentation
    again:
    https://msdn.microsoft.com/en-us/library/ms224763(v=vs.110).aspx
    The Default property
    checks whether type T implements
    the System.IEquatable<T> interface
    and, if so, returns an EqualityComparer<T> that
    uses that implementation. Otherwise, it returns an EqualityComparer<T> that
    uses the overrides of Object.Equals and Object.GetHashCode provided
    by T.
    Although this explanation is a little misleading or vague, simply put it says, the Default property returns a comparer object that checks whether the objects being compared have implemented IEquatable<T> interface or not. If so, it uses the implemented
    Equals() of that interface in the objects, otherwise it resorts to the intrinsic Equals() method that is inherited to all objects from the object, father of all, base type.
    This IEqualityComparer<T>.Default object and that IEquatable<T> interface together help not to corrupt the innate Equals() methods of our classes.
    However, as good as what .NET team might have thought by favoring us using an IEqualityComparer<T>.Default in the Contains() method of the non-generic Stack<T> class, their solution is far from what is expected. Because again it stucks us to
    the first problem. We have only one and only one chance to define an equality comparison algorithm in our class. Naturally we can't implement an IEquatable<T> interface multiple times in our class.
    The tiny problem is that, they missed adding a new constructor in Stack<T> class that accepts an IEqualityComparer<T> like what they have done in Dictionary<TKey, TValue>. This is a shame. Because this is not a rare occasion. The same is
    true for some other collections such as Queue<T>, HashSet<T>, LinkedList<T> and List<T>. I don't know whether they have did this intentionally or they simply forgot to do that.
    So what? What should we do if we had multiple equality testing algorithms.
    Fortunatey there is still hope.
    If .NET team working on generic collections were that lazy to forget adding new constructors to generic classes, they did a good job and solved the problem from the root by adding a bunch of extension methods to all IEnumerable, IEnumerable<T> collections
    in System.Linq namspace and freed themselves forever. Look at the following extension methods in System.Linq namespace:
    public static bool Contains<TSource>(
    this IEnumerable<TSource> source,
    TSource value,
    IEqualityComparer<TSource> comparer
    You got the idea? They defined a general Contains() method for any IEnumerable<T> collection that allows us to give it a custom equality comparer object. Hooray! Problem solved. But wait. Why should we be happy? That comparer parameter might still
    use IEquatable<T> and presumes the objects have an Equals() method! Oh my gush! Still returned to the same point and the problem exists. We stuck forever! Don't freak out. Be calm.
    The IEqualityComparer<T> interface is defined this way:
    public interface IEqualityComparer<in T>
    bool Equals(T x, T y);
    int GetHashCode(T obj);
    It says, an equality comparer should have an Equals() method and it is in this very method that the equality comparison algorithm will go. This method receives two objects and compares them together using whatever algorithm the creator of the equality comparer
    class has intended.
    The good point of this IEqualityComparer<T> and that Contains<T>() extension method is that, your objects are not expected to implement an IEquatable<T> as well. This is another good news. Because we are neither forced to override
    Equals() in our class and corrupt it, nor we have to implement IEquatable<T> in them. In fact, our classes remain clean and intact and we even don't have to have their source code.
    So, this was the final cure for the malignant issue of equality comparison. The same story is true for less than/greater than comparison.
    In conclusion, what I recommend is that, never override the intrinsic Equals() method, inherited from Object, in your classes. Instead use the extension methods that has a comparer parameter in their signature and receive a comparer object (like Contains<T>()).
    I don't want to again raise a depression air here. But you should know that. You have the right. All extension methods does not have an overload that has a comparer parameter. But don't worry. You can yourself write the required extension method you need and
    complete the probably incomplete work in .NET.
    Good luck

  • What would be the result if we overrode the equals method properly

    import java.util.*;
    class Nearly{
       String value:
       Nearly(String v){ value = v;}
       public int hashCode(){ return 1;}
       public boolean equals(Nearly n){
       if(value.charAt(0) == n.value.charAt(0)) return true;
       return false;
       public static void mian(String [] sss){
         Nearly n1 = new Nearly("aaa");
         Nearly n2 = new Nearly("aaa");
         String s = "_";
         if(n1.equals(n2)) s += "1";
         if(n1==n2) s += "2";
         Set <Nearly> set = new HashSet <Nearly>();
          set.add(n1);
          set.add(n2);
         System.out.println(s + " " + set.size());
    }Ans: b) -1 2
    Reason: Two different equals() methods are invoked, because the equals() method shown in the code doesn't properly override Object.equals(), which takes an Object
    Ok so what would have been the result if the equals() method was something like this:
    public boolean equals(Object n)
    {I guess my question is about the overriding the equals() method which i am not able to understand

    pksingh79 wrote:
    what would be the result if we overrode the equals method properlyThe result would be a method, the functionality of which would adhere to Object#equals()'s contract:
    public boolean equals(Object obj)
    Indicates whether some other object is "equal to" this one.
    The equals method implements an equivalence relation on non-null object references:
    &#42; It is reflexive: for any non-null reference value x, x.equals(x) should return true.
    &#42; It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and
    only if y.equals(x) returns true.
    &#42; It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and
    y.equals(z) returns true, then x.equals(z) should return true.
    &#42; It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y)
    consistently return true or consistently return false, provided no information used in equals
    comparisons on the objects is modified.
    &#42; For any non-null reference value x, x.equals(null) should return false.

  • Using JSplitPane for Comparing two Files/Contents

    Hi Java Gurus,
    I want to develope a Comparison tool which compares 2 jar files and report the difference in a user friendly manner. Everything is fine and i selected the JSplitPane to display the difference report. I face some problems in doing it exactly simillar way of presenting like a Comparison tools which is there in VSS.
    I created 2 panels and added in a splitpane.
    one panel contains the content of first jar file and another panel contains the content of second jar file.
    The content are added in a textarea and the textarea is added to a scrollpane, which is added to the panel.
    If i fix some size to Textarea, when i expand the Splitpane, the size is not getting expanded accordingly.
    if i remove the size for textarea, the content is not displayed.
    Can anyon give some suggestion.
    Have anybody developed a GUI using JSplitPane simmilar to any Difference Tool simillar to VSS.
    expecting your replies.
    Raffi

    Hi,
    Eventhough the left and right pane are not synchronized, It is showing the Differences.
    I have changed the JTextArea to JTextPane to have control on each of the String i am inserting.
    It is fine. but when i am doing the comparison for the second time, i am removing the content of the Document (of the JTextPane) and adding the new Content to the Document (of the JTextPane).
    While i am printing the length and text after removing the Old Content (in console), i am getting 0, "". But in the GUI old content are not removed and new content keeps on appending, eventhough i do updateUI() and validate().
    Is that a BUG of JTextPane?????????????
    Can any One Figure it out.
    My Code is Here:
    import java.io.*;
    import java.util.zip.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
    * put your documentation comment here
    public class CheckZipFile extends JFrame {
    private JLabel firstZip = null;
    private JLabel secondZip = null;
    private JTextField firstZipName = null;
    private JTextField secondZipName = null;
    private JButton compare = null;
    private JPanel mainPanel = null;
    private JFileChooser fileChooser = null;
    private JButton chooseButton1 = null;
    private JButton chooseButton2 = null;
    private StringBuffer buffer = null;
    private StringBuffer buffer1 = null;
    private StringBuffer buffer2 = null;
    private ApolloFileFilter zipFilter;
    private JTextPane first = null;
    private JTextPane second = null;
    private Document doc1 = null;
    private Document doc = null;
    * put your documentation comment here
    public CheckZipFile () {
    initialize();
    buildGUI();
    addWindowListener();
    setLookAndFeel();
    this.pack();
    * put your documentation comment here
    private void initialize () {
    buffer = new StringBuffer();
    buffer1 = new StringBuffer();
    buffer2 = new StringBuffer();
    zipFilter = new ApolloFileFilter(new String[] {
    "zip", "jar"
    }, "ZIP and JAR Files");
    fileChooser = new JFileChooser(new File("c:\\"));
    //fileChooser.setAcceptAllFileFilterUsed(false);
    fileChooser.addChoosableFileFilter(zipFilter);
    * put your documentation comment here
    private void setLookAndFeel () {
    try {
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    SwingUtilities.updateComponentTreeUI(this);
    if (fileChooser != null) {
    SwingUtilities.updateComponentTreeUI(fileChooser);
    } catch (UnsupportedLookAndFeelException exc) {
    System.out.println("Unsupported Look And Feel:" +
    exc);
    } catch (IllegalAccessException exc) {
    System.out.println("IllegalAccessException Error:"
    + exc);
    } catch (ClassNotFoundException exc) {
    System.out.println("ClassNotFoundException Error:"
    + exc);
    } catch (InstantiationException exc) {
    System.out.println("InstantiateException Error:"
    + exc);
    * put your documentation comment here
    private void buildGUI () {
    mainPanel = createPanel();
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(mainPanel, BorderLayout.CENTER);
    this.getContentPane().add(createDifferencePanel(), BorderLayout.SOUTH);
    this.setSize(700, 450);
    SwingUtilities.updateComponentTreeUI(this);
    * put your documentation comment here
    * @return
    private JPanel createPanel () {
    JPanel main = new JPanel() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(300, 90);
    main.setLayout(new GridLayout(3, 3));
    firstZip = new JLabel("First Jar/Zip File:") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(firstZip);
    firstZipName = new JTextField() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(firstZipName);
    chooseButton1 = new JButton("Choose File 1") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(chooseButton1);
    chooseButton1.addActionListener(new ButtonListener());
    secondZip = new JLabel("Second Jar/Zip File:") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(secondZip);
    secondZipName = new JTextField() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(secondZipName);
    chooseButton2 = new JButton("Choose File 2") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(chooseButton2);
    chooseButton2.addActionListener(new ButtonListener());
    JLabel temp1 = new JLabel("") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(temp1);
    compare = new JButton("Compare") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    compare.addActionListener(new ButtonListener());
    main.add(compare);
    JLabel temp2 = new JLabel("") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(temp2);
    return main;
    * put your documentation comment here
    * @param fileContent1
    * @param fileContent2
    private void updateGUI (String fileContent1, String fileContent2) {
    System.out.println("Came here UpdateGUI");
    updateDifferencePanel(fileContent1, fileContent2);
    System.out.println("Came here UpdateGUI after call");
    SwingUtilities.updateComponentTreeUI(this);
    * put your documentation comment here
    * @return
    private JSplitPane createDifferencePanel () {
    JPanel firstPanel = new JPanel() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(350, 360);
    first = new JTextPane();
    initStylesForTextPane(first);
    doc1 = first.getDocument();
    JScrollPane scroll1 = new JScrollPane(first);
    scroll1.setPreferredSize(new Dimension(325, 360));
    scroll1.setMinimumSize(new Dimension(100, 100));
    firstPanel.add(scroll1);
    first.updateUI();
    first.validate();
    JPanel secondPanel = new JPanel() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(350, 360);
    second = new JTextPane();
    initStylesForTextPane(second);
    doc = second.getDocument();
    JScrollPane scroll2 = new JScrollPane(second);
    scroll2.setPreferredSize(new Dimension(325, 360));
    scroll2.setMinimumSize(new Dimension(100, 100));
    secondPanel.add(scroll2);
    second.updateUI();
    second.validate();
    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
    firstPanel, secondPanel);
    splitPane.setDividerLocation(0.5);
    splitPane.updateUI();
    splitPane.validate();
    splitPane.setPreferredSize(new Dimension(700, 360));
    return splitPane;
    * put your documentation comment here
    * @param fileContent1
    * @param fileContent2
    private void updateDifferencePanel (String fileContent1,
    String fileContent2) {
    System.out.println("Came here");
    try {
    doc1 = first.getDocument();
    System.out.println("Text bef: " + first.getText());
    System.out.println("Length bef: " + doc1.getLength());
    doc1.remove(0, doc1.getLength());
    System.out.println("Length aft: " + doc1.getLength());
    System.out.println("Text aft: " + first.getText());
    doc1.insertString(doc1.getLength(), "test", first.getStyle("regular"));
    first.updateUI();
    first.validate();
    } catch (BadLocationException ble1) {
    ble1.printStackTrace();
    StringTokenizer tokens1 = new StringTokenizer(fileContent1,
    String token1 = "";
    String text1 = "";
    String differs1 = "false";
    int indexOfColon1 = -1;
    int count1 = 0;
    while (tokens1.hasMoreTokens()) {
    token1 = (String)tokens1.nextToken();
    count1++;
    indexOfColon1 = token1.lastIndexOf(":");
    text1 = token1.substring(0, indexOfColon1);
    differs1 = token1.substring(indexOfColon1 + 1);
    try {
    if (count1 == 1)
    System.out.println("Start: " + doc1.getLength());
    if (differs1.equals("true"))
    doc1.insertString(doc1.getLength(), text1
    + ":", first.getStyle("bold"));
    else
    doc1.insertString(doc1.getLength(), text1
    + ":", first.getStyle("regular"));
    if ((count1%3) == 0)
    doc1.insertString(doc1.getLength(), "\n",
    first.getStyle("regular"));
    } catch (BadLocationException ble1) {
    ble1.printStackTrace();
    first.updateUI();
    first.validate();
    try {
    System.out.println("Length bef: " + doc.getLength());
    doc.remove(0, doc.getLength());
    System.out.println("Length aft: " + doc.getLength());
    second.updateUI();
    second.validate();
    } catch (BadLocationException ble1) {
    ble1.printStackTrace();
    StringTokenizer tokens = new StringTokenizer(fileContent2,
    String token = "";
    String text = "";
    String differs = "false";
    int indexOfColon = -1;
    int count = 0;
    while (tokens.hasMoreTokens()) {
    token = (String)tokens.nextToken();
    count++;
    indexOfColon = token.lastIndexOf(":");
    text = token.substring(0, indexOfColon);
    differs = token.substring(indexOfColon + 1);
    try {
    if (differs.equals("true"))
    doc.insertString(doc.getLength(), text +
    ":", second.getStyle("bold"));
    else
    doc.insertString(doc.getLength(), text +
    ":", second.getStyle("regular"));
    if ((count%3) == 0)
    doc.insertString(doc.getLength(), "\n",
    second.getStyle("regular"));
    } catch (BadLocationException ble) {
    ble.printStackTrace();
    second.updateUI();
    second.validate();
    * put your documentation comment here
    * @param textPane
    protected void initStylesForTextPane (JTextPane textPane) {
    //Initialize some styles.
    Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
    Style regular = textPane.addStyle("regular", def);
    StyleConstants.setFontFamily(def, "SansSerif");
    Style s = textPane.addStyle("italic", regular);
    StyleConstants.setItalic(s, true);
    s = textPane.addStyle("bold", regular);
    StyleConstants.setBold(s, true);
    s = textPane.addStyle("small", regular);
    StyleConstants.setFontSize(s, 10);
    s = textPane.addStyle("large", regular);
    StyleConstants.setFontSize(s, 16);
    s = textPane.addStyle("icon", regular);
    StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
    StyleConstants.setIcon(s, new ImageIcon("images/Pig.gif"));
    s = textPane.addStyle("button", regular);
    StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
    JButton button = new JButton(new ImageIcon("images/sound.gif"));
    button.setMargin(new Insets(0, 0, 0, 0));
    button.addActionListener(new ActionListener() {
    * put your documentation comment here
    * @param e
    public void actionPerformed (ActionEvent e) {
    Toolkit.getDefaultToolkit().beep();
    StyleConstants.setComponent(s, button);
    * put your documentation comment here
    private void addWindowListener () {
    this.addWindowListener(new WindowAdapter() {
    * put your documentation comment here
    * @param we
    public void windowClosed (WindowEvent we) {
    CheckZipFile.this.dispose();
    System.exit(1);
    * put your documentation comment here
    * @param we
    public void windowClosing (WindowEvent we) {
    CheckZipFile.this.dispose();
    System.exit(1);
    * put your documentation comment here
    * @param argv[]
    * @exception Exception
    public static void main (String argv[]) throws Exception {
    CheckZipFile compareZip = new CheckZipFile();
    compareZip.pack();
    compareZip.setVisible(true);
    * put your documentation comment here
    public class ButtonListener
    implements ActionListener {
    * put your documentation comment here
    * @param ae
    public void actionPerformed (ActionEvent ae) {
    if (ae.getSource() == chooseButton1) {
    int retval = fileChooser.showDialog(CheckZipFile.this,
    "Select");
    if (retval == JFileChooser.APPROVE_OPTION) {
    File theFile = fileChooser.getSelectedFile();
    if (theFile != null) {
    File[] files = fileChooser.getSelectedFiles();
    if (fileChooser.isMultiSelectionEnabled()
    && files != null && files.length > 1) {
    String filenames = "";
    for (int i = 0; i < files.length; i++) {
    filenames = filenames + "\n"
    + files.getPath();
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose these files: \n"
    + filenames + "\n Multiple Selection Should not be done here");
    else if (theFile.isDirectory()) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this directory: "
    + fileChooser.getSelectedFile().getPath()
    + "\n Please select a Zip File or jar File");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this file: " +
    fileChooser.getSelectedFile().getPath());
    firstZipName.setText(fileChooser.getSelectedFile().getPath());
    return;
    else if (retval == JFileChooser.CANCEL_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "User cancelled operation. No file was chosen.");
    else if (retval == JFileChooser.ERROR_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "An error occured. No file was chosen.");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Unknown operation occured.");
    if (ae.getSource() == chooseButton2) {
    int retval = fileChooser.showDialog(CheckZipFile.this,
    "Select");
    if (retval == JFileChooser.APPROVE_OPTION) {
    File theFile = fileChooser.getSelectedFile();
    if (theFile != null) {
    File[] files = fileChooser.getSelectedFiles();
    if (fileChooser.isMultiSelectionEnabled()
    && files != null && files.length > 1) {
    String filenames = "";
    for (int i = 0; i < files.length; i++) {
    filenames = filenames + "\n"
    + files[i].getPath();
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose these files: \n"
    + filenames + "\n Multiple Selection Should not be done here");
    else if (theFile.isDirectory()) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this directory: "
    + fileChooser.getSelectedFile().getPath()
    + "\n Please select a Zip File or jar File");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this file: " +
    fileChooser.getSelectedFile().getPath());
    secondZipName.setText(fileChooser.getSelectedFile().getPath());
    return;
    else if (retval == JFileChooser.CANCEL_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "User cancelled operation. No file was chosen.");
    else if (retval == JFileChooser.ERROR_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "An error occured. No file was chosen.");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Unknown operation occured.");
    if (ae.getSource() == compare) {
    String file1 = firstZipName.getText();
    String file2 = secondZipName.getText();
    if (file1 == null || file2 == null) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Enter / Select the Files to be compared");
    return;
    if (file1.equals("") || file2.equals("")) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Enter / Select the Files to be compared");
    return;
    try {
    ZipFile zip1 = new ZipFile(file1);
    ZipFile zip2 = new ZipFile(file2);
    int size1 = zip1.size();
    int size2 = zip2.size();
    if (size1 != size2) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Size of both the jars are not same");
    return;
    Enumeration entries1 = zip1.entries();
    Enumeration entries2 = zip2.entries();
    ZipEntry entry1 = null;
    ZipEntry entry2 = null;
    String name1 = "";
    String name2 = "";
    long filesize1 = 0;
    long filesize2 = 0;
    long time1;
    long time2;
    //StringBuffer detail = new StringBuffer();
    boolean nameDiffers = false;
    boolean sizeDiffers = false;
    boolean timeDiffers = false;
    buffer.append(file1 + "\t\t\t" + file2 +
    "\n______________________________________________________________________\n");
    //buffer1.append("\t\t" + file1 + "\n");
    //buffer2.append("\t\t" + file2 + "\n");
    int length = buffer.length();
    for (int x = 0; x < size1; x++) {
    nameDiffers = false;
    sizeDiffers = false;
    timeDiffers = false;
    entry1 = (ZipEntry)entries1.nextElement();
    entry2 = (ZipEntry)entries2.nextElement();
    name1 = entry1.getName();
    name2 = entry2.getName();
    filesize1 = entry1.getSize();
    filesize2 = entry2.getSize();
    time1 = entry1.getTime();
    time2 = entry2.getTime();
    if (!name1.equals(name2)) {
    //System.out.println("Name of the Entries in both the Jars are not same:\n"+ entry1.getName() + " : " + entry2.getName() );
    nameDiffers = true;
    //return;
    //else
    //     System.out.println("Name: " +entry1.getName());
    if (filesize1 != filesize2) {
    //System.out.println("Size of the Entries in both the Jars are not same:\n"+ entry1.getSize() + " : " + entry2.getSize() );
    sizeDiffers = true;
    //return;
    if (time1 != time2) {
    //System.out.println("Time of the Entries in both the Jars are not same:\n"+ entry1.getTime() + " : " + entry2.getTime() );
    timeDiffers = true;
    //return;
    if (nameDiffers || sizeDiffers || timeDiffers) {
    if (filesize1 != 0 && filesize2 !=
    0) {
    buffer.append(name1 + ":" +
    filesize1 + ":" + new java.util.Date(time1)
    + "\t" + name2 + ":"
    + filesize2 + ":" +
    new java.util.Date(time2)
    + "\n");
    buffer1.append(name1 + ":" +
    nameDiffers + ";" +
    filesize1 + ":" + sizeDiffers
    + ";" + new java.util.Date(time1).toString()
    + ":" + timeDiffers +
    buffer2.append(name2 + ":" +
    nameDiffers + ";" +
    filesize2 + ":" + sizeDiffers
    + ";" + new java.util.Date(time2).toString()
    + ":" + timeDiffers +
    if (length == buffer.length())
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Both the Zip / Jar Files are Identical");
    else {
    getToolkit().beep();
    //System.out.println(buffer.toString());
    updateGUI(buffer1.toString(), buffer2.toString());
    getToolkit().beep();
    } catch (Exception ex) {
    ex.printStackTrace();

  • PV2014

    What I like about PV2012
    It's possible to achieve amazing results, e.g. bright but detailed highlights.................... - and lots more.
    *** Keep in mind when reading the stuff below:
    ====================================
    I adore PV2012, and the results I'm getting with it.
    What follows is in no way intended to suggest I could do it better.
    I think the ACR engineers are brilliant and did a spectacular job with PV2012.
    What I don't like about PV2012
    Auto-highlight recovery always on.
    Auto-shadow recovery always on.
    Insufficient control over shadow fill.
    Too few sliders for controlling results.
    Slider behavior is not always predictable (and jives better with some tonal distributions than others).
    Ideas for PV2014
    ==============
    I think the general idea of the histogram zone graph is great:
    User can adjust tone of each zone.
    The problem is that the blacks slider works very differently than the shadows slider, and exposure doesn't just adjust the midtones, etc...
    I think if the sliders just did what the zone graph suggests, except with more precision and no image-adaptive behavior, so it's predictable yet finely controllable, it would be awesome.
    Then, if one could define a multitude of characteristics for each zone, besides level, like saturation, local contrast, etc...
    e.g. Zones:
    blacks
    deep shadows
    mid shadows
    upper shadows
    lower mids
    mid mids
    upper mids
    lower highs
    mid highs
    upper highs
    whites
    And of course some way to set bottom/top points and roll-off characteristics... (exposure/contrast sliders as we know them would no longer be needed).
    That way adjusting tone would be more like adjusting a graphic equalizer of an audio amplifier.
    Totally predictable, effects of the zone sliders mostly confined to the zones being adjusted (of course smooth blending between zones).
    Locals of course would be zone-smart as well.
    Kinda-like adjusting a tone curve, except with the magic that protects contrast in one zone when adjusting contrast in another...
    People would be able to learn to use it in minutes, instead of months...
    Not sure how well this would fit with Lightroom+Revel considerations, but maybe...
    Bonus idea:
    =========
    Wire existing PV2012 controls to these (absolute) zone controls, except have them work relatively, instead of absolutely, and have presets for contrast and highlight/shadow adjustments that define the "contours"...
    Just my .02,
    Rob

    Eric,
    One of the cool things about Lr4 is that you can jerk it around with reckless abandon without adversely affecting image quality, for the most part.
    PS - I just processed a (Nikon D300) picture of a Raven, which I realized later was actually in PV2003, not PV2010.
    Original (PV2003) settings:
    camera vivid v?
    exposure +.3
    recovery 0
    fill light 30
    blacks 15
    brightness 35
    contrast 55
    clarity 12
    no tone curve
    no locals
    Results: Spectacular
    Notes:
    Easy & quick to do.
    A modicum of clipped blacks.
    Subtle clarity haloing.
    Image detail quality sucked due to PV2003.
    PV2012 settings:
    camera vivid v4
    exposure 0
    contrast +20
    highlights -70
    shadows +50
    whites +10
    blacks +100
    clarity +50
    parametric darks: -35
    no locals
    Results: Only slightly different - equally spectacular.
    Notes:
    Was impossible for me to do without +blacks and tone curve.
    I was fortunate to be able to take advantage of PV2012 clarity properties to my advantage for this photo. Often clarity=+50 would be over the top. If I had to use regular contrast instead, it would have been even more of a challenge.
    Only a sprinkling of clipped black specs, but in this case, absolute clippage was not necessary, and in fact represents an improvement.
    No clarity halos.
    Excellent image quality.
    Time consuming and tricky.
    Winner:
    PV2012 by a nose, quality-wise.
    PV2010 by a landslide, ease-of-edit-wise.
    Conclusion:
    PV2012 blacks can be awesome really, often times and in some ways superior to PV2010/03, but sometimes you really gotta work for 'em.
    Even so, there is sometimes a loss of unadulterated black sheen in PV2012, reminiscent of the loss of highlight sheen due to auto-highlight recovery - you can't really see it in this image because clarity=+50 pretty much counters it, but if this were an image that couldn't take such clarity it would be noticeable. You can recover some of the highlight sheen via +whites, but the only way to get the black sheen back in PV2012 is to use clarity, if you're lucky.
    I think it's safe to say many of us Lr4 users are mourning the loss of Lr3's fill-light. And, those of us who understand the trade-off that was required to bring us auto-shadow recovery are bemoaning the lack of control over it, too.
    Rob

  • Two equal objects, but different classes?

    When programming on binding Referenceable object with JDK version 1.5.0_06, I have encountered a very strange phenomenon: two objects are equal, but they belong to different classes!!!
    The source codes of the program bind_ref.java are listed as below:
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    import javax.naming.*;
    import javax.naming.spi.ObjectFactory;
    import java.util.Hashtable;
    public class bind_ref {
    public static void main( String[] args ) {
    // Set up environment for creating the initial context
    Hashtable env = new Hashtable();
    env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory" );
    env.put( Context.PROVIDER_URL, "file:/daniel/" );
    Context ctx = null;
    File f = null;
    Fruit fruit1 = null, fruit2 = null;
    byte [] b = new byte[10];
    try {
    ctx = new InitialContext( env );
    Hashtable the_env = ctx.getEnvironment();
    Object [] keys = the_env.keySet().toArray();
    int key_sz = keys.length;
    fruit1 = new Fruit( "Orange" );
         SubReference ref1 = fruit1.getReference();
    ctx.rebind( "reference", fruit1 );
         fruit2 = ( Fruit )ctx.lookup( "reference" );
         System.out.println( "ref1's class = (" + ref1.getClass().toString() + ")" );
         System.out.println( "fruit2.myRef's class = (" + fruit2.myRef.getClass().toString() + ")" );
         System.out.println( "( ref1 instanceof SubReference ) = " + ( ref1 instanceof SubReference ) );
         System.out.println( "( fruit2.myRef instanceof SubReference ) = " + ( fruit2.myRef instanceof SubReference ) );
         System.out.println( "ref1.hashCode = " + ref1.hashCode() + ", fruit2.myRef.hashCode = " + fruit2.myRef.hashCode() );
         System.out.println( "ref1.equals( fruit2.myRef ) = " + ref1.equals( fruit2.myRef ) );
    } catch( Exception ne ) {
    System.err.println( "Exception: " + ne.toString() );
    System.exit( -1 );
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    All the outputs are shown as below:
    =======================================================
    Fruit: I am created at Mon Jun 18 11:35:13 GMT+08:00 2007
    SubReference: I am created at Mon Jun 18 11:35:13 GMT+08:00 2007
    --------- (i)subref.hashCode() = (-1759114666)
    SubReference: I am created at Mon Jun 18 11:35:13 GMT+08:00 2007
    --------- (i)subref.hashCode() = (-1759114666)
    FruitFactory: obj's class = (class javax.naming.Reference)
    FruitFactory: obj's hashCode = -1759114666
    FruitFactory: obj = (Reference Class Name: Fruit
    Type: fruit
    Content: Orange
    FruitFactory: ( obj instanceof SubReference ) = false
    FruitFactory: subref_class_name = (Fruit)
    Fruit: I am created at Mon Jun 18 11:35:13 GMT+08:00 2007
    ref1's class = (class SubReference)
    fruit2.myRef's class = (class javax.naming.Reference)
    ( ref1 instanceof SubReference ) = true
    ( fruit2.myRef instanceof SubReference ) = false
    ref1.hashCode = -1759114666, fruit2.myRef.hashCode = -1759114666
    ref1.equals( fruit2.myRef ) = true
    ========================================================
    I hightlight the critical codes and outputs related to the strangeness with bold texts.
    Who can tell me what happens? Is it really possible that two objects belonging to different classes are equal? If so, why that?

    It can also depend on how you implement the equals method.
    class Cat {
        String name;
        Cat(String n) {
            name = n;
    class Dog {
        String name;
        Dog(String n) {
            name = n;
        public boolean equals(Object o) {
            return name.equals(o.name);
        public static void main(String[] args) {
            Dog d = new Dog("Fred");
            Cat c = new Cat("Fred");
            System.out.println(d.equals(c));
    }

  • SegregatingTable data into different bucket with equal numebr of

    Hi Guys,
    I wanted to process table data in chunks not all the rows at a time. How can we achieve this in oracle.
    Example :
    I have one table EMP which has ten thousands rows(10,000) rows. Now these ten thousands rows are joined with other tables to process data and it takes time. So I wanted to pass one thousands rows at a time as an input to the procedures so that processing should happen only with 1 thousands rows at a time. This table does not have any primary key. So it there any method in oracle using that I can segregating the tables data into different buckets with equal number of rows.
    I have used DBMS_PARALLEL_EXECUTE but its taking lots of time. Any help will be appreciated.

    I have one table EMP which has ten thousands rows(10,000) rows. Now these ten thousands rows are joined with other tables to process data and it takes time.
    OK... So this is your actual problem. And the solution you are trying to come up with does not sound promising. So lets take a step back and re-think our strategy here. First thing would be how about we see some code? Show us your code that you say is running slow. And we can take it from there. The number 10,000 is a very small number. And if that is causing performance issue then you are in some big trouble.
    And also it wouldn't hurt if you could read this Re: 3. How to  improve the performance of my query? / My query is running slow.

  • Why are these classes equal? Loaded from different classloaders.

    I thought that classes loaded from different classloaders were seen as different in the JVM? But this code prints true to every check:
    try
         Class c = new URLClassLoader( new URL[] { new URL( "jar:file://home/tests/test.jar!/" ) } ).loadClass( "Test" );
         Class c2 = new URLClassLoader( new URL[] { new URL( "jar:file://home/tests/test.jar!/" ) } ).loadClass( "Test" );
         System.out.println( ( c == c2 ) );
         System.out.println( ( c.equals( c2 ) ) );
         System.out.println( ( c.getName().equals( c2.getName() ) ) );
    catch (Exception e)
         e.printStackTrace();
    }

    DrClap wrote:
    The more unbelievable thing is that this:
    System.out.println( ( c == c2 ) );prints "true". That shouldn't happen, and it's nothing to do with facts about classloaders. It shouldn't happen because "new" called twice should produce two different objects, no matter what kind of objects they are.
    I didn't try your code because I would have had to spend a couple of minutes creating suitable jar files. But did you actually run that code? Or is it a reduction of some larger piece of code and you just assumed it would do what you said it does? Because I don't believe that.I actually ran the code and every line DID print out true. This is in Java 1.5.
    I figured out why they're all true though - it's because the jar file was in the classpath, so the classes were loaded by a different classloader (the same one). When I put the jar out of the classpath, the statments printed out like this:
    //false
    System.out.println( ( c == c2 ) );
    //false
    System.out.println( ( c.equals( c2 ) ) );
    //true
    System.out.println( ( c.getName().equals( c2.getName() ) ) );I agree on the first one printing true but I seem to remember something about how they changed that rule in Java 1.5. I could be wrong but in c++, that would be a completely valid true statement (assuming your class implemented the "==" operator), so maybe they changed it to be in line with that?

  • Error message:" Couldn't complete the command because the scratch disks are full" Ive try to fix this many times following different steps but none of them work and my disks equal to over 250GB. Please help.

    . This error message pops up in Photoshop  when i just wanna create a new plain white template. I have downloaded agentransack to track down the temp files and for some reason it says nothing matches the temp files.I have a couple of drives including 2 SSD's. I've  try to fix this many times following different steps but none of them work and my disks equal to over 250GB. Please help. ( I am running windows 7 proffesional) 64 bit

    Good day!
    my disks equal to over 250GB.
    What’s relevant is the space on the disk/s you have assigned as Scratch Disks – what are they (Phortoshop > Preferences > Performance > Scratch Disks)?
    Regards,
    Pfaffenbichler

  • Scale multiple differently sized objects to exact equal dimensions

    Hello guys
    What I'd like to do is the following: I have a large number (couple of hundreds) of equally shaped but differently sized objects - actually circles - and I'd like to scale them all to the exact same height and width while keeping their positions. Apparently, doing it by hand would take quite a while, so I'm looking for a single command or an automated way of doing it.
    I have already tried and excluded the following ways:
    - Selecting all objects and playing aroung with the "Transform" box always resulted in the whole selection being scaled.
    - Transform each: my objects are all differently sized, so percental scaling is of no use.
    - CMD+D: I also tried to do it by first resizing one object and then applying CMD+D to each other object by hand, but this function seems to use percental scaling as well. This means: When I scale one object from 10px to 12px (120%), then select an 8 px object, press CMD+D, the final size of the second object is 9.6px instead of 12px. ARGH.
    - Recording an action: I have little experience with actions, but it seems that the result is the same as above when I select all objects (whole selection scaled, instead of each object).
    I am using Illustrator CS5 (15.0.2) on a Mac 2.66 GHz quad-core with OSX 10.6.8 (Snow Leopard). I couldn't find a proper thread in this forum (or any other forum), so I'm starting a new one here. Maybe I didn't look properly, so please redirect me if there is one that answers my question.
    Thanks in advance!
    HOR

    if they are circles, ovals, rectangles or rounded corner rectangles that is easy
    1 Select all  the objects.
    2. Go to Effect>Convert to Shape and select the shape even if it is the same shape you have already.
    3. Select Absolute as the method and enter the dimensions you wish click OK.
    4. While still selected go to Object>Expand Appearance.
    But if you have fill and a stroke for these circles they will be two separate paths of the same dimesnions each as a group.
    So you will have to either accept that or delete the paths you don't want so you will:
    1. lock all the art other than the circles
    2. Select one of the paths either with the stroke or the fill
    2. Go to Select>Same Stroke Weight
    3. Hit delete

  • Ok, im new to numbers but i cant work this one out. In column A is an average of hours worked. I have 4 columns. A and B have different values. Column C is an average of hours worked. When column C is less then 8 i need column D to equal column a

    Ok, im new to numbers but i cant work this one out. I have 4 columns. A and B have different values. Column C is an average of hours worked. When column C is less then 8 i need column D to equal column A. When column C is equal or greater then 8 i need column D to equal the sum of A and B.

    Hi Lucas,
    Try this:
    Formula in D2 (and Fill Down) =IF(C2<8, A2,A2+B2)
    The IF function follows the logic of if, then, else.
    IF(this is true, then do this, else do that)
    If it is raining, then stay at home, else hold a picnic .
    Regards,
    Ian.

  • Global display options for equal columns of different tables

    Hi,
    is it possible to create some kind of templates for tables which are nearly the same! I mean different table names, different content and some columns are equal.
    e.g. I've got a a lot of Error tables, in every table there is a column named Reload Flag, which should be displayed as a List of value, can i set this by default. Or for example I've got a column named Error message and i display it as a standard report column, but i always have to edit the column formatting, because the column is very broad. I have to change the CSS Style ( {width:30em;} )!
    THX Mat

    Hi,
    Yes, It must be working using rowid since its not mention anywhere, I could not post it. But I too think so.
    check the below block
    SQL> Declare
      2  v_mydept1 emp.deptno%TYPE;
      3  v_mydept2 dept.loc%TYPE;
      4  CURSOR C1 IS SELECT e.deptno,d.loc
      5  FROM emp e,dept d
      6  WHERE e.deptno = d.deptno
      7  and empno=7900
      8  FOR UPDATE of e.sal;
      9  Begin
    10  OPEN C1;
    11  LOOP
    12  FETCH C1 INTO v_mydept1,v_mydept2;
    13  Dbms_output.put_line(v_mydept2);
    14  Dbms_output.put_line(v_mydept1);
    15  EXIT WHEN C1%NOTFOUND;
    16  UPDATE dept SET loc = 'NY' WHERE CURRENT OF C1;
    17  select loc into v_mydept2 from dept where deptno=v_mydept1;
    18  Dbms_output.put_line('Record updated '||v_mydept2);
    19  End loop;
    20  COMMIT;
    21  End;
    22  /
    Declare
    ERROR at line 1:
    ORA-01410: invalid ROWID
    ORA-06512: at line 16The logic doesnot make sense, but if you can notice the error speaks about rowid.
    For update locks the specific rows listed in the cursor and Where Current Of Clause must be taking in account the rows as per thier ROWID.
    Twinkle
    Edited by: Twinkle on Apr 8, 2010 4:28 PM

  • The different between Contain and equals

    I not sure about the different between contain and equals if I want to know if the string have some character or not ?
    thankyou

    HJava wrote:
    Thank you for all the reply,
    I have if (myTYpe.substring(0).contains(""u") ) work
    if if (myTYpe.substring(0).equals(""u") ) not work
    so I post this question, may be I made other mistake
    Thank youIf you wanted to see if the first character of the string was u then it is either
    myTYpe.charAt(0) == 'u'or startWith("u") or matches("^u.*$") etc, etc, etc.
    substring(0) will return the entire String, of course, which you would know if had actually looked at the API docs to find out what it did or even simply printed out the result to see what it did. Seemingly, however, you simply assumed you knew what it did and went on with that false assumption without bothering to even attempt to verify even though it was, already, not producing the results you expected. Instead, you focused on "the difference between contains and equals" which is self-evident in their names and obviously not the problem to begin with.

  • I have a Macbook Air that had some coffee spilled on the keyboard and as a result the plus/equals key is no longer functioning. Can I use a program like Ukelele to reprogram a different key to be my plus/equals key? Can I program a function key? key

    I have a Macbook Air that had some coffee spilled on the keyboard and as a result the plus/equals key is no longer functioning. Can I use a program like Ukelele to re-program another key to do that function? Can I re-program a function key to do this function?

    Water + electronics do not mix.  Something was damaged insode, and the logic board may be corroding as is.
    Take it to a Genius Bar for an evaluation and repair estimate.
    This is accidental damage and not covered by warranty.

Maybe you are looking for