/*******************************************************************************
* ============LICENSE_START====================================================
* * org.onap.aaf
* * ===========================================================================
* * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
* * ===========================================================================
* * 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.
* * ============LICENSE_END====================================================
* *
* * ECOMP is a trademark and service mark of AT&T Intellectual Property.
* *
******************************************************************************/
package org.onap.aaf.cadi.config;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Date;
import java.util.HashSet;
import org.onap.aaf.cadi.AbsUserCache;
import org.onap.aaf.cadi.lur.LocalLur;
public class UsersDump {
/**
* @param args
*/
public static boolean write(OutputStream os, AbsUserCache> lur) {
PrintStream ps;
if(os instanceof PrintStream) {
ps = (PrintStream)os;
} else {
ps = new PrintStream(os);
}
try {
ps.println("");
ps.println("");
ps.println("");
// We loop through Users, but want to write Groups first... therefore, save off print
StringBuilder sb = new StringBuilder();
// Obtain all unique role names
HashSet groups = new HashSet();
for(AbsUserCache>.DumpInfo di : lur.dumpInfo()) {
sb.append("\n ");
}
// Print roles
for(String group : groups) {
ps.print(" ");
}
ps.println(sb);
ps.println("");
ps.flush();
} catch (Throwable t) {
t.printStackTrace(ps);
return false;
}
return true;
}
/**
*
* Note: This method returns a String if there's an error, or null if ok.
* This unusual style is necessitated by the fact that any Exceptions thrown are likely to
* be unlogged and hidden from view, making debugging almost impossible.
*
* @param writeto
* @param up
* @return
*/
public static String updateUsers(String writeto, LocalLur up) {
// Dump a Tomcat-user.xml lookalike (anywhere)
if(writeto!=null) {
// First read content
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if(UsersDump.write(baos, up)) {
byte[] postulate = baos.toByteArray();
// now get contents of file
File file = new File(writeto);
boolean writeIt;
if(file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);
byte[] orig = new byte[(int)file.length()];
try {
fis.read(orig);
} finally {
fis.close();
}
// Starting at third "<" ( line)
int startA=0, startB=0;
for(int i=0;startA