001/*
002 * Stallion Core: A Modern Web Framework
003 *
004 * Copyright (C) 2015 - 2016 Stallion Software LLC.
005 *
006 * This program is free software: you can redistribute it and/or modify it under the terms of the
007 * GNU General Public License as published by the Free Software Foundation, either version 2 of
008 * the License, or (at your option) any later version. This program is distributed in the hope that
009 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
011 * License for more details. You should have received a copy of the GNU General Public License
012 * along with this program.  If not, see <http://www.gnu.org/licenses/gpl-2.0.html>.
013 *
014 *
015 *
016 */
017
018package io.stallion.plugins.javascript;
019
020import com.fasterxml.jackson.core.JsonGenerator;
021import com.fasterxml.jackson.core.JsonProcessingException;
022import com.fasterxml.jackson.databind.JsonSerializer;
023import com.fasterxml.jackson.databind.SerializerProvider;
024
025import java.io.IOException;
026import java.util.HashMap;
027import java.util.Map;
028
029import static io.stallion.utils.Literals.*;
030import static io.stallion.Context.*;
031
032
033public class JsModelSerializer extends JsonSerializer<BaseJavascriptModel> {
034    @Override
035    public void serialize(BaseJavascriptModel baseJavascriptModel, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
036        Map<String, Object> map = new HashMap<>();
037        for(String key: baseJavascriptModel.keySet()) {
038            if (key.equals("attributes") || key.equals("isNewInsert")) {
039                continue;
040            }
041            if (!baseJavascriptModel.getJsonIgnoredColumns().contains(key)) {
042                map.put(key, baseJavascriptModel.get(key));
043            }
044        }
045        for(String key: baseJavascriptModel.getDynamicProperties().keySet()) {
046            BaseDynamicColumn col = baseJavascriptModel.getDynamicProperties().get(key);
047            map.put(key, col.func(baseJavascriptModel));
048        }
049        jsonGenerator.writeObject(map);
050    }
051}