package org.teachingextensions.virtualproctor;
import java.io.File;
import org.teachingextensions.approvals.lite.util.StringUtils;
import org.teachingextensions.approvals.lite.util.io.FileUtils;
/**
* <img src="http://indiajkd.com/wp-content/uploads/2013/08/JKD-India-6.gif"
* style="text-align: left" alt="A teacher at a blackboard" height="30" width="30"> Virtual
* Proctor allows you to see what all the TKPJava coders are making
*/
public class VirtualProctor
{
public static class internals
{
private static final String FILE_NAME = ".virtual_proctor.txt";
private static final String FILE_CLASS_NAME = ".class.virtual_proctor.txt";
public static String getName()
{
String name = getCustomName();
if (name == null)
{
name = getComputerName();
}
if (name == null)
{
name = getUserName();
}
return name;
}
private static String getCustomName()
{
File file = new File(FILE_NAME);
if (file.exists()) { return FileUtils.readFileWithSuppressedExceptions(file).trim(); }
return null;
}
public static String getComputerName()
{
return System.getenv("COMPUTERNAME");
}
public static String getUserName()
{
return System.getenv("USER");
}
public static void resetName()
{
File file = new File(FILE_NAME);
if (file.exists())
{
file.delete();
}
}
public static void setName(String name)
{
if (StringUtils.isEmpty(name)) { return; }
FileUtils.writeFileQuietly(new File(FILE_NAME), name);
}
public static void setClassName(String className)
{
if (StringUtils.isEmpty(className)) { return; }
FileUtils.writeFileQuietly(new File(FILE_CLASS_NAME), className);
}
public static void resetClassName()
{
File file = new File(FILE_CLASS_NAME);
if (file.exists())
{
file.delete();
}
}
public static String getClassName()
{
String name = getCustomClassName();
if (name == null)
{
name = "world";
}
return name;
}
private static String getCustomClassName()
{
File file = new File(FILE_CLASS_NAME);
if (file.exists()) { return FileUtils.readFileWithSuppressedExceptions(file).trim(); }
return null;
}
public static String getFullName()
{
return getClassName() + "." + getName();
}
}
/**
* Allows you to set the displayed username in Virtual Proctor
* <div><b>Example:</b> {@code VirtualProctor.setName("Grace Hopper")} </div>
*
* @param name
* A name that is displayed for the user in the Virtual
* Proctor client
*/
public static void setName(String name)
{
internals.setName(name);
}
/**
* Allows you to set the displayed classroom name in Virtual Proctor
* <div><b>Example:</b> {@code VirtualProctor.setClassName("LePort School")} </div>
*
* @param className
* A name that is displayed for the student classroom in the Virtual
* Proctor client
*/
public static void setClassName(String className)
{
internals.setClassName(className);
}
}