9f6b27f94bf074f503d4131c1db4eefee0795bc5
[vamsas.git] / src / org / vamsas / client / simpleclient / SimpleClientAppdata.java
1 /**
2  * 
3  */
4 package org.vamsas.client.simpleclient;
5
6 import java.io.DataInput;
7 import java.io.DataOutput;
8 import java.util.Vector;
9
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.vamsas.client.IClientAppdata;
13 import org.vamsas.objects.core.AppData;
14 import org.vamsas.objects.core.ApplicationData;
15 import org.vamsas.objects.core.User;
16 import org.vamsas.objects.utils.AppDataReference;
17
18 /**
19  * @author jimp
20  * Access interface to data chunks read from a VamsasArchiveReader stream 
21  * (or byte buffer input stream) or written to a VamsasArchive stream.
22  */
23 public class SimpleClientAppdata implements IClientAppdata {
24   private static Log log = LogFactory.getLog(SimpleClientAppdata.class);
25
26   ClientDocument clientdoc;
27   /**
28    * state flags
29    * - accessed ClientAppdata
30    * - accessed UserAppdata
31    * => inputStream from embedded xml or jar entry of backup has been created
32    * - set ClientAppdata
33    * - set UserAppdata
34    * => an output stream has been created and written to - or a data chunk has been written.
35    *  - need flag for switching between embedded and jar entry mode ? - always write a jar entry for a stream.
36    *  - need code for rewind and overwriting if the set*Appdata methods are called more than once.
37    *  - need flags for streams to except a call to set*Appdata when an output stream exists and is open.
38    *  - need 
39    * @param clientdoc The ClientDocument instance that this IClientAppData is accessing
40    */
41   protected SimpleClientAppdata(ClientDocument clientdoc) {
42     if (clientdoc==null) {
43       log.fatal("Implementation error - Null ClientDocument for SimpleClientAppdata construction.");
44       throw new Error("Implementation error - Null ClientDocument for SimpleClientAppdata construction.");
45     }
46     this.clientdoc = clientdoc;
47   }
48   /**
49    * gets appropriate app data for the application, if it exists in this dataset
50    * 
51    */
52   private void extractAppData() {
53     org.vamsas.objects.core.VamsasDocument doc = null;
54     Vector apldataset = AppDataReference.getUserandApplicationsData(
55         doc, clientdoc.sclient.getUserHandle(), clientdoc.sclient.getClientHandle());
56     ApplicationData appsglobal=null;
57     User usersdata = null;
58     if (apldataset!=null) {
59       if (apldataset.size()>0) {
60         AppData clientdat = (AppData) apldataset.get(0);
61         if (clientdat instanceof ApplicationData) {
62           appsglobal = (ApplicationData) clientdat;
63           if (apldataset.size()>1) {
64             clientdat = (AppData) apldataset.get(1);
65             if (clientdat instanceof User)
66               usersdata = (User) clientdat;
67             if (apldataset.size()>2)
68               log.info("Ignoring additional ("+(apldataset.size()-2)+") AppDatas returned by document appdata query.");
69           } 
70         } else {
71           log.warn("Unexpected entry in AppDataReference query: id="+clientdat.getVorbaId()+" type="+clientdat.getClass().getName());
72         }
73       }
74     }
75   }
76
77   /* (non-Javadoc)
78    * @see org.vamsas.client.IClientAppdata#getClientAppdata()
79    */
80   public byte[] getClientAppdata() {
81     // TODO Auto-generated method stub
82     return null;
83   }
84
85   /* (non-Javadoc)
86    * @see org.vamsas.client.IClientAppdata#getClientInputStream()
87    */
88   public DataInput getClientInputStream() {
89     // TODO Auto-generated method stub
90     return null;
91   }
92
93   /* (non-Javadoc)
94    * @see org.vamsas.client.IClientAppdata#getClientOutputStream()
95    */
96   public DataOutput getClientOutputStream() {
97     // TODO Auto-generated method stub
98     return null;
99   }
100
101   /* (non-Javadoc)
102    * @see org.vamsas.client.IClientAppdata#getUserAppdata()
103    */
104   public byte[] getUserAppdata() {
105     // TODO Auto-generated method stub
106     return null;
107   }
108
109   /* (non-Javadoc)
110    * @see org.vamsas.client.IClientAppdata#getUserInputStream()
111    */
112   public DataInput getUserInputStream() {
113     // TODO Auto-generated method stub
114     return null;
115   }
116
117   /* (non-Javadoc)
118    * @see org.vamsas.client.IClientAppdata#getUserOutputStream()
119    */
120   public DataOutput getUserOutputStream() {
121     // TODO Auto-generated method stub
122     return null;
123   }
124
125   /* (non-Javadoc)
126    * @see org.vamsas.client.IClientAppdata#hasClientAppdata()
127    */
128   public boolean hasClientAppdata() {
129     // TODO Auto-generated method stub
130     return false;
131   }
132
133   /* (non-Javadoc)
134    * @see org.vamsas.client.IClientAppdata#hasUserAppdata()
135    */
136   public boolean hasUserAppdata() {
137     // TODO Auto-generated method stub
138     return false;
139   }
140
141   /* (non-Javadoc)
142    * @see org.vamsas.client.IClientAppdata#setClientAppdata(byte[])
143    */
144   public void setClientAppdata(byte[] data) {
145     // TODO Auto-generated method stub
146     
147   }
148
149   /* (non-Javadoc)
150    * @see org.vamsas.client.IClientAppdata#setUserAppdata(byte[])
151    */
152   public void setUserAppdata(byte[] data) {
153     // TODO Auto-generated method stub
154     
155   }
156   /* (non-Javadoc)
157    * @see java.lang.Object#finalize()
158    */
159   protected void finalize() throws Throwable {
160     // TODO Auto-generated method stub
161     super.finalize();
162   }
163
164 }