diff --git a/src/opensesim/gui/AssetEditor/AssetEditorDialog.java b/src/opensesim/gui/AssetEditor/AssetEditorDialog.java index e6c7757..0893920 100644 --- a/src/opensesim/gui/AssetEditor/AssetEditorDialog.java +++ b/src/opensesim/gui/AssetEditor/AssetEditorDialog.java @@ -30,19 +30,15 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; import java.awt.Dialog; import java.util.logging.Level; import java.util.logging.Logger; -import javax.swing.InputVerifier; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JTextField; import opensesim.AbstractAsset; import opensesim.World; import opensesim.gui.EscDialog; import opensesim.gui.Globals; -import opensesim.sesim.Assets.BasicAsset; import opensesim.util.IDGenerator.Id; import org.json.JSONException; import org.json.JSONObject; @@ -208,12 +204,15 @@ public class AssetEditorDialog extends EscDialog { String vs; try { + vs = mapper.writeValueAsString(dialog.assetEditorPanel); System.out.print(vs); } catch (JsonProcessingException ex) { Logger.getLogger(AssetEditorDialog.class.getName()).log(Level.SEVERE, null, ex); } + ObjectNode n = mapper.valueToTree(dialog.assetEditorPanel); + return dialog.newId; } diff --git a/src/opensesim/gui/AssetEditor/AssetListPanel.java b/src/opensesim/gui/AssetEditor/AssetListPanel.java index 194841d..f02d23f 100644 --- a/src/opensesim/gui/AssetEditor/AssetListPanel.java +++ b/src/opensesim/gui/AssetEditor/AssetListPanel.java @@ -25,8 +25,14 @@ */ package opensesim.gui.AssetEditor; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import java.util.AbstractMap; +import java.util.Collection; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; @@ -35,6 +41,7 @@ import opensesim.sesim.Assets.BasicAsset; import opensesim.World; import opensesim.gui.Globals; import opensesim.util.IDGenerator.Id; +import opensesim.util.SeSimObjectMapper; /** * @@ -72,6 +79,7 @@ public class AssetListPanel extends javax.swing.JPanel { return; } m.setRowCount(0); + for (AbstractAsset a : world.getAssetCollection()) { m.addRow(new Object[]{ a.getID(), @@ -79,12 +87,23 @@ public class AssetListPanel extends javax.swing.JPanel { a.getName(), a.getTypeName() }); - + } + Collection ac; + ObjectMapper om = new ObjectMapper(); + om.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + try { + String s = om.writeValueAsString(world.getAssetCollection()); + System.out.printf("MyValues %s", s); + } catch (JsonProcessingException ex) { + Logger.getLogger(AssetListPanel.class.getName()).log(Level.SEVERE, null, ex); + } + + } - public TableModel getModel() { + private TableModel getModel() { class TModel extends DefaultTableModel { diff --git a/src/opensesim/util/SeSimObjectMapper.java b/src/opensesim/util/SeSimObjectMapper.java new file mode 100644 index 0000000..65b4f61 --- /dev/null +++ b/src/opensesim/util/SeSimObjectMapper.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018, 7u83 <7u83@mail.ru> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package opensesim.util; + +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; + +/** + * + * @author 7u83 <7u83@mail.ru> + */ +public final class SeSimObjectMapper extends ObjectMapper { + + Object object; + + public SeSimObjectMapper(Object o) { + super(); + object = o; + // disable auto detection + disable(MapperFeature.AUTO_DETECT_CREATORS, + MapperFeature.AUTO_DETECT_FIELDS, + MapperFeature.AUTO_DETECT_GETTERS, + MapperFeature.AUTO_DETECT_IS_GETTERS); + // if you want to prevent an exception when classes have no annotated properties + disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + } + + ObjectNode getObjectNode() { + return valueToTree(object); + } + +}