/******************************************************************************* * Copyright 2017 Capital One Services, LLC and Bitwise, Inc. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package hydrograph.ui.graph.model.utils; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; /** * The class GenerateUniqueJobIdUtil * Used for Generating Unique Job Id. * @author Bitwise * */ public class GenerateUniqueJobIdUtil { public static final GenerateUniqueJobIdUtil INSTANCE = new GenerateUniqueJobIdUtil(); /** * Generates Unique Job Id. * * @return {@link String} */ public String generateUniqueJobId() throws NoSuchAlgorithmException { String uniqueJobId = ""; SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); int number = 0; for (int i = 0; i < 20; i++) { number = random.nextInt(21); } byte[] secureRandom = random.getSeed(number); long milliSeconds = System.currentTimeMillis(); String timeStampLong = Long.toString(milliSeconds); /* * String timeStamp = new * SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()); * this.uniqueJobId=jobId.concat(""+secureRandom.hashCode()).concat( * JOB_ID_STRING_SEPARATOR+timeStampLong) + JOB_ID_STRING_SEPARATOR + * timeStamp; */ uniqueJobId = "Job_".concat("" + secureRandom.hashCode()).concat("_" + timeStampLong); return uniqueJobId; } }