git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@247 0109f412-320b-0410-ab79-c3e0c5ffbbe6
166 lines
4.1 KiB
Java
166 lines
4.1 KiB
Java
//------------------------------------------------------------------------------
|
|
// Desc: Default Restore Client
|
|
//
|
|
// Tabs: 3
|
|
//
|
|
// Copyright (c) 2004-2006 Novell, Inc. All Rights Reserved.
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of version 2 of the GNU General Public
|
|
// License as published by the Free Software Foundation.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, contact Novell, Inc.
|
|
//
|
|
// To contact Novell about this file by physical or electronic mail,
|
|
// you may find current contact information at www.novell.com
|
|
//
|
|
// $Id: $
|
|
//------------------------------------------------------------------------------
|
|
|
|
package xflaim;
|
|
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import xflaim.RCODE;
|
|
|
|
/**
|
|
* This is a simple example of a class that implements the
|
|
* {@link RestoreClient RestoreClient} interface. It restores from a
|
|
* backup file created with {@link DefaultBackupClient
|
|
* DefaultBackupClient}. Note that this class is mostly intended as a
|
|
* demonstration. It only restores full backups; it cannot handle incremental
|
|
* or hot, continuous backups.
|
|
*/
|
|
public class DefaultRestoreClient implements RestoreClient
|
|
{
|
|
public DefaultRestoreClient(
|
|
String sBackupPath)
|
|
{
|
|
m_sBackupPath = sBackupPath;
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see xflaim.RestoreClient#openBackupSet()
|
|
*/
|
|
public int openBackupSet()
|
|
{
|
|
int iRc = RCODE.NE_XFLM_OK;
|
|
|
|
// Note: This rather odd name comes from the desire to maintain
|
|
// compatibility with C++ default backup client
|
|
|
|
String sPathName = m_sBackupPath +
|
|
System.getProperty( "file.separator") +
|
|
"00000000.64";
|
|
|
|
try
|
|
{
|
|
m_IStream = new FileInputStream( sPathName);
|
|
}
|
|
catch ( FileNotFoundException e)
|
|
{
|
|
iRc = RCODE.NE_XFLM_IO_PATH_NOT_FOUND;
|
|
}
|
|
|
|
return( iRc);
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see xflaim.RestoreClient#openRflFile(int)
|
|
*/
|
|
public int openRflFile(int iFileNum)
|
|
{
|
|
// This function is not, and probably never will be, implemented.
|
|
// If you really want to restore from a hot, continuous backup,
|
|
// you should write your own implementations of RestoreClient
|
|
// (and BackupClient).
|
|
|
|
return( RCODE.NE_XFLM_FAILURE);
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see xflaim.RestoreClient#openIncFile(int)
|
|
*/
|
|
public int openIncFile(int iFileNum)
|
|
{
|
|
// This function is not, and probably never will be, implemented.
|
|
// If you really want to restore from an incremental backup,
|
|
// you should write your own implementations of RestoreClient
|
|
// (and BackupClient).
|
|
// Note that this function will still be called by XFlaim. Returning
|
|
// PATH_NOT_FOUND is what tells XFLaim that there are no more incremental
|
|
// backups.
|
|
|
|
return( RCODE.NE_XFLM_IO_PATH_NOT_FOUND);
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see xflaim.RestoreClient#read(int, byte[])
|
|
*/
|
|
public int read(byte[] Buffer, int[] BytesRead)
|
|
{
|
|
// Try to read Buffer.length bytes from the file.
|
|
// Store the actual bytes read in BytesRead[0]. Note that
|
|
// BytesRead will have a length of 1.
|
|
|
|
int iBytesRead = 0;
|
|
int iRc = RCODE.NE_XFLM_OK;
|
|
|
|
try
|
|
{
|
|
iBytesRead = m_IStream.read( Buffer);
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
iRc = RCODE.NE_XFLM_FAILURE;
|
|
}
|
|
|
|
if( iBytesRead == -1)
|
|
{
|
|
iBytesRead = 0;
|
|
iRc = RCODE.NE_XFLM_IO_END_OF_FILE;
|
|
}
|
|
|
|
BytesRead[0] = iBytesRead;
|
|
|
|
return( iRc);
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see xflaim.RestoreClient#close()
|
|
*/
|
|
public int close()
|
|
{
|
|
int iRc = RCODE.NE_XFLM_OK;
|
|
|
|
try
|
|
{
|
|
m_IStream.close();
|
|
}
|
|
catch ( IOException e)
|
|
{
|
|
iRc = RCODE.NE_XFLM_FAILURE;
|
|
}
|
|
|
|
m_IStream = null;
|
|
return( iRc);
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see xflaim.RestoreClient#abortFile()
|
|
*/
|
|
public int abortFile() {
|
|
return close();
|
|
}
|
|
|
|
private String m_sBackupPath;
|
|
private FileInputStream m_IStream;
|
|
}
|