|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface OptionFileChanger
It is strongly recommended that you do not implement the Interface
OptionFileChanger directly. Use the abstract class
AbstractOptionFileChanger
instead.
Method Summary | |
---|---|
boolean |
checkApproval(CRasterFileInformation rasterFile)
Here you can check if it is correct to add this OptionFileChanger to this rasterFile. |
CRasterFileInformation |
getActualFile()
|
AttributeTable |
getData()
|
java.lang.String |
getErrorMessage()
|
int |
getId()
|
java.util.List<java.lang.String> |
getInfoDependencies()
|
java.lang.String |
getOldFileRelativeFilePath()
|
org.jdom.Element |
getOptionElement()
Creates a new Element object that contains all
Information that should be saved in a configuration file. |
java.lang.String |
getOptionName()
Returns the name of the OptionFileChanger. |
int |
getUsableCount()
Deprecated. should not be used since version 2.0.26 |
boolean |
isPublic()
Deprecated. should not be used since version 2.0.26 |
boolean |
isUsed()
|
void |
setId(int id)
Deprecated. should not be used since version 2.0.26 |
void |
setOldRasterFile(CRasterFileInformation oldRasterFile)
|
void |
setOptionAttributes(org.jdom.Element eOption)
Sets all attributes that are saved in the configuration file. |
void |
setWorkerStatus(WorkerStatus workerStatus)
|
void |
write()
This method will be executed from the ThreadPool There are several steps that must be followed: Get actual file . |
Methods inherited from interface java.lang.Runnable |
---|
run |
Method Detail |
---|
boolean checkApproval(CRasterFileInformation rasterFile)
rasterFile
-
CRasterFileInformation getActualFile() throws java.io.IOException
java.io.IOException
AttributeTable getData()
java.lang.String getErrorMessage()
int getId()
java.util.List<java.lang.String> getInfoDependencies()
org.jdom.Element getOptionElement() throws org.jdom.IllegalDataException
Element
object that contains all
Information that should be saved in a configuration file.extensions.xml
filegetOptionName
correctly,
you can use this function to get the name.
Element optionElement = new Element(this.getOptionName());
There are TWO attributes which should ALWAYS be saved, the status of the
execution (Therefore the same boolean expression that should be used in
the method isUsed
) and the id of the current optionFileChanger.
Element
with all contents that should be saved
in the Configuration File AbstractOptionFileChanger
.used
is the
boolean expression
optionElement.setAttribute("used",Boolean.toString(used));
Besides the used state, you can save what ever you want and it is
possible to use the complex methods that jdom gives you.
For example: creating subElements (insensa.optionfilechanger.OptionFileChanger.setInfos
and
it can be fatal to use wrong keys
private final string XML_ATTR_USED = "used";
org.jdom.IllegalDataException
java.lang.String getOptionName()
extensions.xml
or in EOption
int getUsableCount()
boolean isPublic()
boolean isUsed()
void setId(int id)
id
- a unique id for this optionvoid setOldRasterFile(CRasterFileInformation oldRasterFile)
oldRasterFile
- The RasterFileInformation that will use this optionFileChangervoid setOptionAttributes(org.jdom.Element eOption) throws java.io.IOException
getOptionElement
.
eOption
- the jdom.Element
which holds the attributes
java.io.IOException
- eOption
holds all information that was saved.
Attribute attrUsed = element.getAttribute(XML_ATTR_USED);
Attribute attrID = element.getAttribute(XML_ATTR_ID);
if(attrUsed==null || attrID==null)
throw new IOException("one ore more necessary attributes cannot be found");
try
{
used=attrUsed.getBooleanValue();
id=attrID.getIntegerValue();
}catch (DataConversionException e)
{
throw new IOException(e);
}
java.lang.String getOldFileRelativeFilePath()
void setWorkerStatus(WorkerStatus workerStatus)
workerStatus
- the WorkerStatus
that should Listen to the execution
progressvoid write() throws java.io.IOException, org.jdom.JDOMException, CRasterFileException
java.io.IOException
org.jdom.JDOMException
CRasterFileException
- AbstractOptionFileChanger.getActualFile()
AbstractOptionFileChanger.solveDependencies(CRasterFileInformation)
CRasterFileInformation actualRasterFile = getActualRasterFile()
In the next step it is important to be sure that all
dependencies previously defined in
getInfoDependencies
are available. the easiest way is
to use the method
AbstractOptionFileChanger.solveDependencies(CRasterFileInformation)
solveDependencies(actualRasterFile);
Lets assume we need the InfoReader minMaxValues.
CMinMaxValues minMaxValues = (CMinMaxValues)actualRasterFile.getInfoReader(EInfo.minMaxValue.toString());
if(minMaxValues==null)
throw new IOException("Can't solve minMaxValues")
If a WorkerStatus was defined we can tell it that the
progress began.
if(workerStatus!=null)
{
workerStatus.setProgressName("Starting replace zero");
workerStatus.startProcess();
}
Next we need to create a new temporary file as a copy of the
old file with a new name
Now we can get Excess to the gdal functions to create the data.String tmpName = getTemporaryFileName(actualRasterFile); CRasterFileInformation tmpRasterFile = new CRasterFileInformation(tmpName,actualRasterFile,false,false,false); int dataType = actualRasterFile.getBand().getDataType(); tmpRasterFile.createNewFile(actualRasterFile, dataType, actualRasterFile.getNoDataValue());
seeCRasterFileInformation#CRasterFileInformation(String, CRasterFileInformation, boolean, boolean, boolean)
andCRasterFile.createNewFile(insensa.CRasterFile, int, double)
for more information
Band band = actualRasterFile.getBand();
Dataset tmpDataset = tmpRasterFile.getDataset();
int xSize = band.GetXSize();
int ySize = band.getYSize();
float steps = 100.0F/ySize;
float[] fData= new float[xSize];
float readData;
for(int i=0;i < ySize;i++)
{
band.ReadRaster(0,i,xSize,1,fData);
for(int j=0;j < fData.length;j++)
{
readData=fData[j];
if(readData==actualRasterFile.getNoDataValue())
{
}
else
{
if(readData <=0.0f)
fData[j]=0.5f;
}
}
processStatus+=steps;
if(workerStatus!=null)
workerStatus.refreshPercentage(processStatus);
tmpDataset.GetRasterBand(1).WriteRaster(0,i,xSize,1,fData);
}
tmpDataset.FlushCache();
band.FlushCache();
tmpDataset=null;
band=null;
At least it is necessary to save the temporary file and set
the execution status:
saveRasterFile(tmpRasterFile, actualRasterFile);
used=true;
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |