view src/main/java/christie/topology/manager/CreateHash.java @ 168:c7300be0fff6

fix incomingHosts end message
author akahori
date Tue, 22 Jan 2019 16:00:29 +0900
parents c0c29f989af3
children
line wrap: on
line source

package christie.topology.manager;


import christie.annotation.Peek;
import christie.annotation.Take;
import christie.codegear.CodeGear;

import christie.codegear.CodeGearManager;
import org.apache.commons.lang3.RandomStringUtils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.LinkedList;

public class CreateHash extends CodeGear{

    @Take
    String orderHash;

    @Peek
    LinkedList<String> createdList;


    public CreateHash(){ }

    @Override
    protected void run(CodeGearManager cgm) {

        boolean checkNewStr = false;
        String raw = null;

        while (!checkNewStr){
            raw = RandomStringUtils.randomAscii(10);
            // checking raw String has already created
            int count = 0;
            for (String str : createdList) {
                if (raw.equals(str)) break;
                count++;
            }

            if (count == createdList.size()) checkNewStr = true;
        }
        createdList.add(raw);

        try { // convert to MD5
            String MD5 = convertMD5(raw);

            getLocalDGM().put("MD5", MD5);
        } catch (NoSuchAlgorithmException e) {
            System.out.println("cannot convert MD5");

        }
        cgm.setup(new CreateHash());
    }

    private String convertMD5(String raw) throws NoSuchAlgorithmException{
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(raw.getBytes());
        byte[] hash = md.digest();
        StringBuilder builder = new StringBuilder();
        for (byte aHash : hash) {
            if ((0xff & aHash) < 0x10) {
                builder.append("0" + Integer.toHexString((0xff & aHash)));
            } else {
                builder.append(Integer.toHexString((0xff & aHash)));
            }
        }
        return builder.toString();
    }

}