package com.bmc.licensetracker;
import java.util.Timer;
import java.util.TimerTask;
import java.util.List;
import com.bmc.arsys.api.*;
public final class GetLicenseInfo extends TimerTask {
	public static void main(String[] args) {
		TimerTask listCurrent  = new GetLicenseInfo();
		Timer timer = new Timer();
		timer.scheduleAtFixedRate(listCurrent, 0, 1000 * 60 * 60);
	}
	public void run() {
		String user = "xxx";
		String password = "xxx";
		String readServer = "xxx";
		String writeServer = "xxx";
		int epoch = (int) (System.currentTimeMillis() / 1000);
		String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (System.currentTimeMillis()));
		try {
			ARServerUser readContext = new ARServerUser (user, password, "", readServer);
			List<UserInfo> users = readContext.getListUser(2);
			readContext.logout();
			System.out.println(date + " -- " + users.size() + " distinct users read from " + readServer + " and written to " + writeServer);
			for (UserInfo i : users) {
				Entry entryApp = new Entry();
				entryApp.put(2, new Value("Java Process"));
				entryApp.put(901008002, new Value(i.getConnectionTime()));
				entryApp.put(901008005, new Value(i.getUserName()));
				entryApp.put(901008006, new Value(readServer));
				if ( i.getConnectionTime().getValue() > 0 )
					entryApp.put(901008009, new Value(i.getLastAccessTime()));
				List<UserLicenseInfo> userLicInfo = i.getLicenseInfo();
				for ( UserLicenseInfo uli : userLicInfo) {
					entryApp.put(901008004, new Value(uli.getAppLicenseDescriptor()));
					entryApp.put(901008000, new Value(uli.getLicenseTag()));
					entryApp.put(901008001, new Value(uli.getLicenseType()));
					entryApp.put(901008010, new Value(epoch));
					entryApp.put(901008008, new Value(uli.getCurrentLicenseType()));
					if ( uli.getLicensePool() > 0 )
						entryApp.put(901008007, new Value(uli.getLicensePool()));
					if ( uli.getLastAccess().getValue() > 0 )
						entryApp.put(901008003, new Value(uli.getLastAccess()));
					if ( uli.getLicenseTag() == 1 || uli.getLicenseTag() == 4) {
						ARServerUser writeContext = new ARServerUser (user, password, "", writeServer);
						writeContext.createEntry("LIC:LicenseUsageHistory_CCN", entryApp);
						writeContext.logout();
					}
				}
			}
		} catch (Exception e) {
			System.out.println(e.toString());
		}
	}
}
