/** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.agfa.hap.sdo; import java.io.Serializable; import java.util.List; /** * Collection of structured data at a given moment in time. * You can think of this as a set of name-value pairs * where the names correspond to various {@link Property} instances. * The actual content (i.e. which properties are contained) has been defined based on * a {@link SnapshotDefinition}. *
* The difference with a DataGraph is that a Snapshot contains the state of a * set of dataobjects at a certain moment in time. As such it is immutable. * Another difference is that is defines its content based on a definition as opposed * to the datagraph that uses the containment relation * defined by sdo ({@see {@link Property#isContainment()}). *
* The data can be extracted either as a set of {@link ProxyDataObject} instances. * The data can also be returned as a set of objects (POJOs). The latter case assumes * appropriate classes can be * found that correspond to the different {@link Type}s that are used. *
* Warning: * Serialized objects of this class will not be compatible with * future hap.SDO releases. The current serialization support is * appropriate for short term storage or RMI between applications running * the same version of hap.sdo. * * @author AMOCZ * @see DataAccessService * @see DataMapper */ public interface Snapshot extends Serializable { /** * Extracts the objects from the snapshots * @param factory * @return A list containing new objects with appropriate properties filled in. */ List extract(DataMapper mapper); }