|
||||||||||
| 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.IOExceptionAttributeTable 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.IllegalDataExceptionjava.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 optionFileChanger
void 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
progress
void 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 | |||||||||