/*
* This file is part of rasdaman community.
*
* Rasdaman community is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Rasdaman community 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 rasdaman community. If not, see .
*
* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
rasdaman GmbH.
*
* For more information please see
* or contact Peter Baumann via .
*/
#ifndef _SYSTEMBASIC_HH_
#define _SYSTEMBASIC_HH_
class r_Tiling;
// fopen, getc
#include
#include
#include "raslib/mddtypes.hh"
#include "raslib/minterval.hh"
#include "raslib/scalar.hh"
#include "raslib/odmgtypes.hh"
#include "raslib/oid.hh"
#include "rasodmg/transaction.hh"
#include "rasodmg/database.hh"
#include "rasodmg/ref.hh"
#include "rasodmg/set.hh"
#include "rasodmg/gmarray.hh"
#include "rasodmg/polycutout.hh"
#include "cmlparser.hh"
class SystemBasic
{
public:
static char* getData(FILE* file, size_t& dtaSize, int& retval);
static void printScalar(const r_Scalar& scalar);
static int checkArguments(int argc, const char** argv, const char* searchText, int& optionValueIndex);
static void explainRetval(int retval);
static void printOptions();
static int parseParams(int argc, char** argv);
static FILE* checkFile(const char* fileArg, int& retval);
static int convertTo(r_Data_Format fmt, char*& src, size_t& size, r_Minterval& interv, r_Base_Type*& tp, const char* options);
static int convertFrom(r_Data_Format fmt, char*& src, size_t& size, r_Minterval& interv, r_Base_Type*& tp, const char* options);
static int readScaleLevels(const char* argv);
static int initGMarray(r_Ref& tempMDD, FILE* tempFile, r_Data_Format conversionFormat, r_Minterval& tempDataDomain, const char* conversionParams) throw (r_Error);
static int overlayGMarrays(r_Ref& target, const r_Ref& replaceBlackMDD, const r_Ref& backgroundMDD);
static int compareGMarrays(const r_Ref& baseMDD, r_Ref& topMDD);
static void openTransaction(bool readwrite = true) throw (r_Error);
static int compareScaledMDD(const r_Ref& baseMDD, const r_Minterval& clipDom, const r_Minterval& downScaledDomain, unsigned int length, const char* collectionName) throw (r_Error);
static int updateScaledMDD(const r_Ref& baseMDD, const r_Minterval& clipDom, const r_Minterval& downScaledDomain, unsigned int length, const char* collectionName) throw (r_Error);
static int scaleDomain(const r_Minterval& baseDomain, const r_Point& origin, double factor, r_Minterval& scaledDomain, r_Minterval& clipDomain, unsigned int& length);
static int saveData(const char* fileNamePat, const char* data, r_Bytes length, const r_Minterval& mddDomain);
static const char* serverName;
static r_ULong serverPort;
static const char* baseName;
static const char* userName;
static const char* passwd;
static bool printText;
static const char* outputFileName;
static const char* conversionTypeName;
static r_Data_Format inputFormat;
static const char* inputFormatParams;
static r_Data_Format outputFormat;
static const char* outputFormatParams;
static r_Data_Format transferFormat;
static const char* transferFormatParams;
static r_Data_Format storageFormat;
static const char* storageFormatParams;
static const char* collName;
static const char* setTypeName;
static const char* mddTypeName;
static r_OId mddOId;
static bool mddOIdDef;
static r_OId collOId;
static bool collOIdDef;
static const char* fileName;
static r_Database db;
static r_Transaction ta;
static r_Minterval mddDomain;
static bool mddDomainDef;
static bool testBed;
static r_Tiling* theTiling;
static bool polygonDefined;
static r_PolygonCutOut polygon;
static int polygonShrinker;
static bool transparent;
static string outsidePatternSel;
static bool outsidePatternSelDef;
static string insidePatternSel;
static bool insidePatternSelDef;
static string outsidePattern;
static bool outsidePatternDef;
static string insidePattern;
static bool insidePatternDef;
static const int queryBufferLength;
static std::list >* scaleLevels;
static int wrongBytes;
static r_Scale_Function scaleFunction;
static const string tilingDesc;
static const string tilingParamsDesc;
static const char* noUsageHeader;
static const char* usageHeader;
static const char* noUsageFooter;
static const char* usageFooter;
static size_t updateBufferSize;
static const char* defaultUpdateBufferSize;
static std::list layerList;
static std::list patternsTrue;
static std::list patternsFalse;
static r_Minterval overlayDomain;
static bool overlayDomainDef;
static r_Range align;
static bool tiledUpdate;
static bool handleSignal;
static bool force;
};
void signalHandler(int sig);
void installSignalHandlers();
#define QUERYBUFFERLENGTH 512
#define ALLDONE -1
#define OK 0
#define CREATEANDNOCREATE 1
#define NOVALIDDOMAIN 2
#define FILEINACCESSIBLE 3
#define FILENAMETOLONG 4
#define NOCREATECREATECOLL 5
#define NOCOLLTYPE 6
#define COLLOIDANDCOLLNAME 7
#define CREATECOLLWITHOID 8
#define CREATEMDDWITHOID 9
#define INVALIDTILESIZE 10
#define DOMAINDATAMISMATCH 11
#define MDDDOMAINNOTSPECIFIED 12
#define FILENAMENOTSPECIFIED 13
#define NOCOLLNAMENOCOLLOID 14
#define MDDTYPEINVALID 15
#define NOBASETYPE 16
#define EXCEPTIONCREATECOLL 17
#define EXCEPTIONADMIN 18
#define COLLECTIONINACCESSIBLE 19
#define MDDINACCESSIBLE 20
#define OIDINVALID 21
#define MDDOIDANDCOLL 22
#define ARGUMENTSMISSING 23
#define ARGUMENTSINCOMPLETE 24
#define EXCEPTIONEXECUTEQUERY 25
#define NOQUERY 26
#define CONVERSIONNOTSUPPORTED 27
#define CONVERSIONEXCEPTION 28
#define UNKNOWNTILINGTYPE 29
#define TILINGPARAMETERSMISSING 30
#define TILINGPATAMETERSINCORRECT 31
#define CONVERSIONTYPENOTABASETYPE 32
#define CONVERSIONRETURNEDWRONGTYPE 33
#define POLYGONCREATIONFAILED 34
#define OVERLAYDOMAINSDONOTMATCH 35
#define OVERLAYTYPESIZESDONOTMATCH 36
#define POLYGONDOMAINTOOLARGE 37
#define NOCOLLNAMEDEFINED 38
#define NOMDDTYPEDEFINED 39
#define MDDTYPEOFGMARRAYNOTINITIALISED 40
#define SCALEDOMAINISNOTCORRECT 41
#define SCALELEVELSINCORRECT 42
#define GMARRAYSARENOTEQUAL 43
#define UNKNOWNSCALEFUNCTION 44
#define UNABLETOCLAIMRESOURCEFORFILE 45
#define ERRORPARSINGCOMMANDLINE 46
#define TILINGTYPENOTALLOWED 47
#define LAYERSNOTCORRECT 48
#define TOOMANYLAYERS 49
#define OVERLAYDOMAINDOESNOTMATCH 50
#define TILEDUPDATEANDFILE 51
#define NOCOMPAREDESTINATION 52
#define CONVERSIONTYPEMISSING 53
#endif