JsonGeneration.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.paris.lutece.plugins.grustoragedb.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import fr.paris.lutece.plugins.grubusiness.business.notification.BroadcastNotification;
import fr.paris.lutece.plugins.grubusiness.business.notification.EmailAddress;
import fr.paris.lutece.plugins.grubusiness.business.notification.Notification;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author seboo
 */
public class JsonGeneration {
    
    private static final String FAKE_MAIL = "fake_mail@paris.fr";
    private static final String FAKE_MAIL_CC = "fakecc_mail@paris.fr";
    private static final String FAKE_NAME = "fake_name";
    private static final String FAKE_PHONE = "0102030405";
    
    public static void generateJson( List<Notification> list )
    {
        String dir ="/home/seboo/DEV/sites/GRU/site4esb/target/out/";
        
        Path path = Paths.get( dir );
        try {
            Files.createDirectories(path);
        } catch (IOException ex) {
            System.out.println( ex.getLocalizedMessage ( ) );
        }
    
        int i=1;
        ObjectMapper mapper = new ObjectMapper( );
        mapper.configure( DeserializationFeature.UNWRAP_ROOT_VALUE, true );
        mapper.configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false );
        
        for (Notification notif : list)
        {
            anonymize( notif );
            try {
                String strJSON = mapper.writeValueAsString( notif );
                strJSON = "{ \"notification\" : " + strJSON + " }";
                writeFile( dir + i +".json", strJSON );
                i++;
            } catch (JsonProcessingException ex) {
                System.out.println( ex.getLocalizedMessage ( ) );
            }
        }
    }
    
    private static void anonymize( Notification notif )
    {
        
        // customer
        if ( notif.getDemand( ) != null && notif.getDemand( ).getCustomer( ) != null)
        {
            notif.getDemand().getCustomer( ).setEmail(FAKE_MAIL);
            notif.getDemand().getCustomer( ).setFamilyname(FAKE_NAME);
            notif.getDemand().getCustomer( ).setBirthDate("");
            notif.getDemand().getCustomer( ).setFixedPhoneNumber(FAKE_PHONE);
            notif.getDemand().getCustomer( ).setMobilePhone(FAKE_PHONE);
        }
        
        // mail
        if ( notif.getEmailNotification()!= null )
        {
            notif.getEmailNotification().setRecipient(FAKE_MAIL);
            notif.getEmailNotification().setCc(FAKE_MAIL_CC);
            notif.getEmailNotification().setBcc("");
        }
        
        // sms
        if ( notif.getSmsNotification()!= null )
        {
            notif.getSmsNotification().setPhoneNumber(FAKE_PHONE);
        }
        
        // broadcast
        if ( notif.getBroadcastEmail( )!= null && notif.getBroadcastEmail( ).size() > 0 )
        {
            for ( BroadcastNotification broadcastNotif : notif.getBroadcastEmail( ) )
            {
                broadcastNotif.setRecipient( EmailAddress.buildEmailAddresses( FAKE_MAIL, FAKE_MAIL_CC ) );
                broadcastNotif.setCc( EmailAddress.buildEmailAddresses( FAKE_MAIL, FAKE_MAIL_CC ) );
                broadcastNotif.setBcc( new ArrayList<>( ) ) ;
            }
        }
        
        // mydashboard
        
        // backoffice
    }
    
    
    private static void writeFile( String filePath, String fileContent ) 
    {
        try (PrintWriter output = new PrintWriter( filePath, "UTF-8")) {
            output.print( fileContent );
            
        } catch (FileNotFoundException | UnsupportedEncodingException ex) {
            System.out.println( ex.getLocalizedMessage ( ) );
        }
    }
}