# ----------------------------------------------------------------
# This module defines metadata to be used by the batchSVN.py script.
#
# Copy this module as /class/csse/<courseName>/scripts/batchSVNData.py and 
# edit it to define the course metadata for <courseName>.  The sample data
# in the original file can be used by invoking the batchSVN.py script using
# "testing" as the course name argument, e.g.: ./batchSVN.py testing
# ----------------------------------------------------------------

import os
import sys

# ----------------------------------------------------------------
# Hacks the system path so the import of batchSVNTypes works for testing 
# individual course meta-data on the the server.
serverPathToBatchSVN = "/class/csse/resources/Grading"
# Change the following line to point to your local checkout of the CSSE
# resources trunk if you want to test this file on your local machine:
#localMachinePathToBatchSVN = "/Users/cclifton/Documents/Rose/Administrative/resources/Grading"
sys.path.append(serverPathToBatchSVN)
#sys.path.append(localMachinePathToBatchSVN)
from batchSVNTypes import *
# ----------------------------------------------------------------

# ----------------------------------------------------------------
# Local variables
# ----------------------------------------------------------------
repoNamePrefix = 'csse220-201220-'
# replace the following with a description of the course, like 'CSSE 120'
courseDescription = 'CSSE 220 - Object-Oriented Software Dev.'

# ----------------------------------------------------------------
# Defines repositories sets for this course.  Used by main script.
# ----------------------------------------------------------------

section1Students = [
"ameslc",
"campbeeg",
"conwaygt",
"dingx",
"gartzkds",
"harbisjs",
"harrissa",
"jacksoam",
"janeiraj",
"koestedj",
"mcculfpe",
"murphysw",
"postcn",
"rujirasl",
"satchwsm",
"smithgb",
"swenseen",
"toorha",
"wangl2",
"watterlm",
"weirjm"
]

section2Students = [
"dialkc",
"faulknks",
"huangz",
"kodamach",
"lockarbm",
"mccullwc",
"minardar",
"modivr",
"morrista",
"naylorbl",
"olsonmc",
"pearsojw",
"piliseal",
"riechelp",
"robinsdp",
"sanderej",
"sternetj",
"suttonjj",
"tuckerme",
"yuhasem"
]

section3Students = [
"belkat",
"bollivbd",
"cookmj",
"coxap",
"freemal",
"glenngs",
"lucekm",
"maxwellh",
"mengx",
"moorejm",
"oharace",
"oakesja",
"qinz",
"ruthat",
"smithnf",
"sturgedl",
"timaeudg",
"whiteer",
"wuj"
]

allStudents = (section1Students + section2Students + section3Students)
allStudents.sort()

    

reposSets = []
# first set in the list is the default
reposSets.append(RepositorySet("All Students", repoNamePrefix, allStudents))

reposSets.append(RepositorySet("Section1", repoNamePrefix, section1Students))

reposSets.append(RepositorySet("Section2", repoNamePrefix, section2Students))

reposSets.append(RepositorySet("Section3", repoNamePrefix, section3Students))



reposSets.append(RepositorySet("Game of Life", repoNamePrefix, [
    "life-team11",
    "life-team12",
    "life-team13",
    "life-team14",
    "life-team15",
    "life-team16",
    "life-team17",
    "life-team18",
    "life-team19",
    "life-team20",
    "life-team21",
    "life-team22",
    "life-team23",
    "life-team24",
    "life-team25",
    "life-team26",
    "life-team27",
    "life-team28",
    "life-team29",
    "life-team30",
    "life-team31",
    "life-team32",
    "life-team33",
    "life-team34",
    "life-team35",
    "life-team36",
    "life-team37",
    "life-team38",
    "life-team39",
    "life-team40",
    "life-team41",
    "life-team42"
]))

reposSets.append(RepositorySet("Ballworlds", repoNamePrefix, [
    "BW20",
    "BW21",
    "BW22",
    "BW23",
    "BW24",
    "BW25",
    "BW26",
    "BW27",
    "BW28",
    "BW29",
    "BW31",
    "BW32",
    "BW33",
    "BW34",
    "BW35",
    "BW36",
    "BW37",
    "BW38",
    "BW39",
    "BW10",
    "BW11",
    "BW12",
    "BW13",
    "BW14",
    "BW15",
    "BW16",
    "BW17",
    "BW18",
    "BW19"
]))

reposSets.append(RepositorySet("LodeRunner", repoNamePrefix, [
    "Lode21",
    "Lode22",
    "Lode23",
    "Lode24",
    "Lode25",
    "Lode26",
    "Lode27",
    "Lode31",
    "Lode32",
    "Lode33",
    "Lode34",
    "Lode35",
    "Lode36",
    "Lode37",
    "Lode11",
    "Lode12",
    "Lode13",
    "Lode14",
    "Lode15",
    "Lode16",
    "Lode17"
]))



# ----------------------------------------------------------------
# Defines project names and unit tests for this course. 
# Used by main script.
# ----------------------------------------------------------------
projects = []
projects.append(Project("HW1", "FactorialTest", "SeriesSumTest"))
projects.append(Project("ObjectsAndMethods")) #HW2
projects.append(Project("UnitTesting", "StringMethodsPracticeTest", "JUnitMoveTester")) #HW3
projects.append(Project("WordGames")) #HW4 and HW5
projects.append(Project("IntroToJavaGraphics")) #not graded, part of HW6
projects.append(Project("Faces")) #HW6
projects.append(Project("Decisions")) #HW6
projects.append(Project("FundamentalDataTypes")) #HW7 for Boutell
projects.append(Project("Iteration", "AnnualInvestmentTest", "InvestmentTest")) #HW7
projects.append(Project("ArraysAndLists", "QuizScoresTest")) #HW8
projects.append(Project("TwoDArrays", "TicTacToeTest", "TicTacToeTestFromInstructors")) #HW10, individual
projects.append(Project("GameOfLife", "GameOfLifeTest")) #HW10, team0's
#projects.append(Project("Exam1"))
projects.append(Project("Exam1"))
projects.append(Project("Recursion","examples.SentenceTest")) #HW12
projects.append(Project("SierpinskiTriangle")) #HW12
projects.append(Project("Recursion2")) #HW13
projects.append(Project("SortingAndSearching")) #HW14
#HW15, nothing to turn in
projects.append(Project("DesigningClasses")) #HW16
projects.append(Project("OnToInterfaces", "bigRational.BasicBigRationalTest", "bigRational.LargeBigRationalTest")) #HW17
projects.append(Project("EventBasedProgramming")) #HW18
projects.append(Project("Inheritance")) #HW19, LinearLightsOut
#projects.append(Project("Inheritance2")) #HW20, but nothing to grade
#projects.append(Project("SwingDemo2")) #HW16
projects.append(Project("BallWorlds")) #HW20
projects.append(Project("OODesign")) #HW21
projects.append(Project("Exam2", "problem1.CompareProblemTest", "problem2.MultiplierTest"))
projects.append(Project("VectorGraphics"))
projects.append(Project("TextTwisterMIDlet"))
projects.append(Project("LinkedLists")) #HW24
projects.append(Project("DataStructures")) #HW25
projects.append(Project("Exam2MakeUp"))
projects.append(Project("FixedLengthQueue")) #HW25
projects.append(Project("LodeRunner")) #HW25
projects.append(Project("Markov", "Milestone1Tests", "Milestone2Tests"))
projects.append(Project("FinalExam"))


# ----------------------------------------------------------------
# Defines any additional main menu commands for this course.
# Used by main script.
# ----------------------------------------------------------------
menuItems = []
# ----------------------------------------------------------------
# A couple of extra menu items that are useful in a pinch, but aren't yet 
# sufficiently abstracted for general use.
# def copyInExtras(data):
#     forEachRepo("cp ${scriptDir}/*.java ${shortName}/src/btwp/", data)
#     return False
# menuItems.append(MenuItem('Copy in Exam2 test files',copyInExtras))
# 
# def runTestsExtraMem(data):
#     forEachRepo("cd ${shortName} && java -Xmx2000m -cp '${scriptDir}/junit-4.5.jar:bin' org.junit.runner.JUnitCore ${testClasses}", data)
#     return False
# menuItems.append(MenuItem('Run JUnit tests with extra memory',runTestsExtraMem))
# ----------------------------------------------------------------
   


# ----------------------------------------------------------------
# Some test code, executed if this file is imported directly into
# a python shell.  Shouldn't need to change this when specifying
# course-specific data above.
# ----------------------------------------------------------------
if __name__ == '__main__':
    print "reposSets ==", reposSets
    print "Repositories from reposSets[0]:"
    for r in reposSets[0].repos():
        print "   ", r
    print "repository names: ", [r.name for r in reposSets]
    print
    print projects
    print "Test classes:"
    for p in projects:
        print "   %s: %s" % (p.name, p.testClasses)
    print "Additional Menu Items' Text:"
    for mi in menuItems:
        print "  ", mi.text