01: /*
02: * Copyright (c) 1998 - 2005 Versant Corporation
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * Versant Corporation - initial API and implementation
10: */
11: package com.versant.core.jdo.sco.detached;
12:
13: import com.versant.core.jdo.VersantPersistenceManager;
14: import com.versant.core.jdo.VersantStateManager;
15: import com.versant.core.jdo.VersantStateManager;
16: import com.versant.core.common.VersantFieldMetaData;
17: import com.versant.core.common.Utils;
18: import com.versant.core.jdo.sco.VersantSCOMapFactory;
19: import com.versant.core.jdo.sco.VersantSimpleSCO;
20: import com.versant.core.jdo.sco.MapData;
21: import com.versant.core.metadata.FieldMetaData;
22: import com.versant.core.common.BindingSupportImpl;
23:
24: import javax.jdo.spi.PersistenceCapable;
25: import java.io.Serializable;
26: import java.util.Map;
27:
28: public class DetachSCOHashMapFactory implements VersantSCOMapFactory,
29: Serializable {
30:
31: public VersantSimpleSCO createSCOHashMap(PersistenceCapable owner,
32: VersantPersistenceManager pm,
33: VersantStateManager stateManager, VersantFieldMetaData fmd,
34: MapData mapData) {
35: int n = mapData.entryCount;
36: Object[] keys = new Object[n];
37: keys = Utils.getObjectsById(mapData.keys, mapData.entryCount,
38: pm, (FieldMetaData) fmd, fmd.isKeyTypePC());
39: Object[] values = new Object[n];
40: values = Utils.getObjectsById(mapData.values,
41: mapData.entryCount, pm, (FieldMetaData) fmd, fmd
42: .isElementTypePC());
43: mapData.keys = keys;
44: mapData.values = values;
45: return new DetachSCOHashMap(owner, stateManager, fmd, mapData);
46: }
47:
48: public VersantSimpleSCO createSCOHashMap(PersistenceCapable owner,
49: VersantPersistenceManager pm,
50: VersantStateManager stateManager, VersantFieldMetaData fmd,
51: Map map) {
52: return new DetachSCOHashMap(owner, stateManager, fmd, map);
53: }
54:
55: }
|