4 package org.vamsas.client.simpleclient;
6 import java.io.DataInput;
7 import java.io.DataOutput;
8 import java.util.Vector;
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;
20 * Access interface to data chunks read from a VamsasArchiveReader stream
21 * (or byte buffer input stream) or written to a VamsasArchive stream.
23 public class SimpleClientAppdata implements IClientAppdata {
24 private static Log log = LogFactory.getLog(SimpleClientAppdata.class);
26 ClientDocument clientdoc;
29 * - accessed ClientAppdata
30 * - accessed UserAppdata
31 * => inputStream from embedded xml or jar entry of backup has been created
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.
39 * @param clientdoc The ClientDocument instance that this IClientAppData is accessing
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.");
46 this.clientdoc = clientdoc;
49 * gets appropriate app data for the application, if it exists in this dataset
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.");
71 log.warn("Unexpected entry in AppDataReference query: id="+clientdat.getVorbaId()+" type="+clientdat.getClass().getName());
78 * @see org.vamsas.client.IClientAppdata#getClientAppdata()
80 public byte[] getClientAppdata() {
81 // TODO Auto-generated method stub
86 * @see org.vamsas.client.IClientAppdata#getClientInputStream()
88 public DataInput getClientInputStream() {
89 // TODO Auto-generated method stub
94 * @see org.vamsas.client.IClientAppdata#getClientOutputStream()
96 public DataOutput getClientOutputStream() {
97 // TODO Auto-generated method stub
102 * @see org.vamsas.client.IClientAppdata#getUserAppdata()
104 public byte[] getUserAppdata() {
105 // TODO Auto-generated method stub
110 * @see org.vamsas.client.IClientAppdata#getUserInputStream()
112 public DataInput getUserInputStream() {
113 // TODO Auto-generated method stub
118 * @see org.vamsas.client.IClientAppdata#getUserOutputStream()
120 public DataOutput getUserOutputStream() {
121 // TODO Auto-generated method stub
126 * @see org.vamsas.client.IClientAppdata#hasClientAppdata()
128 public boolean hasClientAppdata() {
129 // TODO Auto-generated method stub
134 * @see org.vamsas.client.IClientAppdata#hasUserAppdata()
136 public boolean hasUserAppdata() {
137 // TODO Auto-generated method stub
142 * @see org.vamsas.client.IClientAppdata#setClientAppdata(byte[])
144 public void setClientAppdata(byte[] data) {
145 // TODO Auto-generated method stub
150 * @see org.vamsas.client.IClientAppdata#setUserAppdata(byte[])
152 public void setUserAppdata(byte[] data) {
153 // TODO Auto-generated method stub
157 * @see java.lang.Object#finalize()
159 protected void finalize() throws Throwable {
160 // TODO Auto-generated method stub