ba1.cpp Aggiunti commenti ba1300.cpp Nessuna differenza ba2* Gestione backup con pkzip ba3* e b4* Aggiornata get_next_key git-svn-id: svn://10.65.10.50/trunk@6594 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			123 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						|
#include <archives.h>
 | 
						|
#include <isam.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <prefix.h>
 | 
						|
 | 
						|
#include "ba2200.h"
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// Archiving application
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TArchive_app : public TSkeleton_application
 | 
						|
{ 
 | 
						|
  TArchive _arc;
 | 
						|
  
 | 
						|
protected:
 | 
						|
  virtual bool create();
 | 
						|
  virtual void main_loop();
 | 
						|
  static bool test_firm(TMask_field& f, KEY k);
 | 
						|
  KEY query(long& firm, char& floppy, TString& desc, bool& tmp, bool& zip) const;
 | 
						|
  
 | 
						|
public:      
 | 
						|
  void stop_job();
 | 
						|
 | 
						|
  TArchive_app() {}
 | 
						|
  virtual ~TArchive_app() {}  
 | 
						|
};
 | 
						|
 | 
						|
bool TArchive_app::create()
 | 
						|
{    
 | 
						|
  bool ok = TRUE;
 | 
						|
  
 | 
						|
  TIsamfile utenti(LF_USER);
 | 
						|
  utenti.open(_excllock);
 | 
						|
  for (int err = utenti.first(); err == NOERR; err = utenti.next())
 | 
						|
  {                            
 | 
						|
    const TString16 u = utenti.get("USERNAME");
 | 
						|
    if (u != user() && utenti.get_bool("CONNECTED"))
 | 
						|
    {
 | 
						|
      ok = error_box("L'archiviazione non puo' essere effettuata\n"
 | 
						|
                     "se ci sono altri utenti collegati: %s", (const char*)u);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  utenti.close();
 | 
						|
  
 | 
						|
  if (ok)
 | 
						|
    ok = TSkeleton_application::create();
 | 
						|
  
 | 
						|
  return ok;
 | 
						|
}
 | 
						|
 | 
						|
bool TArchive_app::test_firm(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE)
 | 
						|
  {
 | 
						|
    const char* d = f.mask().get(F_CODDITTA);
 | 
						|
    const long firm = atol(d);
 | 
						|
    if (firm > 0 && !prefix().exist(firm))
 | 
						|
      return f.error_box("La ditta %s non esiste.",d);
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const
 | 
						|
{
 | 
						|
  TMask m("ba2200");
 | 
						|
 | 
						|
  m.set_handler(F_SALVA,test_firm);
 | 
						|
 | 
						|
  const KEY k = m.run();
 | 
						|
 | 
						|
  if (k != K_QUIT)
 | 
						|
  {             
 | 
						|
    if (m.get(F_DATA) == "T")
 | 
						|
      firm = -1;
 | 
						|
    else  
 | 
						|
      firm = m.get_long(F_CODDITTA);
 | 
						|
    floppy = m.get(F_FLOPPY)[0];
 | 
						|
    desc = m.get(F_DESCR);
 | 
						|
    temp = m.get_bool(F_TEMP);
 | 
						|
    zip = m.get_bool(F_ZIP);
 | 
						|
  }  
 | 
						|
  
 | 
						|
  return k;
 | 
						|
}
 | 
						|
 | 
						|
void TArchive_app::main_loop()
 | 
						|
{ 
 | 
						|
  KEY k;   
 | 
						|
  long firm;
 | 
						|
  char floppy;
 | 
						|
  TString desc(80);
 | 
						|
  bool temp;
 | 
						|
  bool zip;
 | 
						|
  
 | 
						|
  while ((k = query(firm, floppy, desc, temp, zip)) != K_QUIT)
 | 
						|
  {                  
 | 
						|
    if (k == K_SAVE) 
 | 
						|
    {
 | 
						|
      if (zip)                        
 | 
						|
        _arc.zip(firm, floppy, desc);
 | 
						|
      else
 | 
						|
        _arc.backup(firm, floppy, desc);
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      if (zip)                        
 | 
						|
        _arc.unzip(firm, floppy, temp);
 | 
						|
      else
 | 
						|
        _arc.restore(firm, floppy, temp);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
int ba2200(int argc, char* argv[])
 | 
						|
{ 
 | 
						|
  TArchive_app a;
 | 
						|
  a.run(argc, argv, "Archiviazione");                  
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 |