Created
December 7, 2015 19:26
-
-
Save shunter/6c0a20737c17344b7cd4 to your computer and use it in GitHub Desktop.
Custom CZML delete
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cesium.tests.javaexamples; | |
import java.io.StringWriter; | |
import org.junit.Test; | |
import agi.foundation.IServiceProvider; | |
import agi.foundation.TypeLiteral; | |
import agi.foundation.cesium.CesiumGenerationStatus; | |
import agi.foundation.cesium.CesiumOutputStream; | |
import agi.foundation.cesium.CzmlDocument; | |
import agi.foundation.cesium.advanced.CesiumGenerator; | |
import agi.foundation.cesium.advanced.CesiumGeneratorContext; | |
import agi.foundation.cesium.advanced.CesiumSource; | |
import agi.foundation.infrastructure.CopyContext; | |
import agi.foundation.infrastructure.ExtensibleObject; | |
import agi.foundation.infrastructure.HashCode; | |
import agi.foundation.infrastructure.IdentifierExtension; | |
import agi.foundation.infrastructure.ObjectExtension; | |
import agi.foundation.infrastructure.ServiceHelper; | |
import agi.foundation.time.JulianDate; | |
import agi.foundation.time.TimeInterval; | |
public class DeleteCesiumSourceTest { | |
public interface ICesiumDeleteService {} | |
public class CesiumDeleteExtension extends ObjectExtension implements ICesiumDeleteService { | |
public CesiumDeleteExtension() {} | |
protected CesiumDeleteExtension(CesiumDeleteExtension existingInstance, CopyContext context) { | |
super(existingInstance, context); | |
} | |
@Override | |
public Object clone(CopyContext context) { | |
return new CesiumDeleteExtension(this, context); | |
} | |
@Override | |
final protected boolean checkForSameDefinition(ObjectExtension other) { | |
CesiumDeleteExtension o = (other instanceof CesiumDeleteExtension) ? (CesiumDeleteExtension) other : null; | |
return o != null && checkForSameDefinition(o); | |
} | |
protected boolean checkForSameDefinition(CesiumDeleteExtension other) { | |
return other != null && other.getClass() == CesiumDeleteExtension.class; | |
} | |
@Override | |
protected int computeCurrentDefinitionHashCode() { | |
return HashCode.combine(1728782135, super.computeCurrentDefinitionHashCode()); | |
} | |
} | |
public class DeleteCesiumSource extends CesiumSource { | |
@Override | |
public void createGenerators(CesiumGeneratorContext context, Object item) { | |
IServiceProvider serviceProvider = (item instanceof IServiceProvider) ? (IServiceProvider) item : null; | |
if (serviceProvider == null) { | |
return; | |
} | |
ICesiumDeleteService deleteService = ServiceHelper.getService(new TypeLiteral<ICesiumDeleteService>() {}, serviceProvider, false); | |
if (deleteService == null) { | |
return; | |
} | |
context.addChildGenerator(new DeleteGenerator(item)); | |
} | |
private class DeleteGenerator extends CesiumGenerator { | |
public DeleteGenerator(Object owner) { | |
super(owner); | |
} | |
@Override | |
public CesiumGenerationStatus generate(CesiumOutputStream output) { | |
output.writePropertyName("delete"); | |
output.writeValue(true); | |
return CesiumGenerationStatus.DONE; | |
} | |
} | |
} | |
@Test | |
public void testDelete() throws Exception { | |
ExtensibleObject deleteObj = new ExtensibleObject(); | |
deleteObj.getExtensions().add(new IdentifierExtension("MyEntity")); | |
deleteObj.getExtensions().add(new CesiumDeleteExtension()); | |
CzmlDocument document = new CzmlDocument(); | |
document.getObjectsToWrite().add(deleteObj); | |
document.setRequestedInterval(new TimeInterval(JulianDate.getMinValue(), JulianDate.getMaxValue())); | |
document.getCesiumSources().add(new DeleteCesiumSource()); | |
StringWriter writer = new StringWriter(); | |
document.writeDocument(writer); | |
System.out.println(writer.toString()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment