Xcos: fix recent diagrams management
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / graph / model / ScicosObjectOwner.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2015-2015 - Scilab Enterprises - Clement DAVID
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 package org.scilab.modules.xcos.graph.model;
17
18 import org.scilab.modules.xcos.JavaController;
19 import org.scilab.modules.xcos.Kind;
20
21 /**
22  * Helper class to own a Scicos MVC object from the Java world.
23  */
24 public class ScicosObjectOwner {
25     final long uid;
26     final Kind kind;
27
28     public ScicosObjectOwner(long uid, Kind kind) {
29         this(new JavaController(), uid, kind);
30     }
31
32     public ScicosObjectOwner(final JavaController controller, long uid, Kind kind) {
33         // defensive programming
34         if (uid == 0) {
35             throw new IllegalStateException();
36         }
37
38         this.uid = uid;
39         this.kind = kind;
40
41         controller.referenceObject(uid);
42     }
43
44     public long getUID() {
45         return uid;
46     }
47
48     public Kind getKind() {
49         return kind;
50     }
51
52     @Override
53     public String toString() {
54         return "[ " + uid + " , " + kind.name() + " ]";
55     }
56
57     @Override
58     public int hashCode() {
59         int hash = 3;
60         hash = 67 * hash + (int) (this.uid ^ (this.uid >>> 32));
61         return hash;
62     }
63
64     @Override
65     public boolean equals(Object obj) {
66         if (this == obj) {
67             return true;
68         }
69         if (obj == null) {
70             return false;
71         }
72         if (getClass() != obj.getClass()) {
73             return false;
74         }
75         final ScicosObjectOwner other = (ScicosObjectOwner) obj;
76         if (this.uid != other.uid) {
77             return false;
78         }
79         return true;
80     }
81
82     @Override
83     protected void finalize() throws Throwable {
84         JavaController controller = new JavaController();
85
86         controller.deleteObject(uid);
87     }
88
89 }