Skip to content

Instantly share code, notes, and snippets.

@shunter
Created December 7, 2015 19:26
Show Gist options
  • Save shunter/6c0a20737c17344b7cd4 to your computer and use it in GitHub Desktop.
Save shunter/6c0a20737c17344b7cd4 to your computer and use it in GitHub Desktop.
Custom CZML delete
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