2018-11-29 13:14:03 -05:00
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
namespace Assets.Scripts
|
|
|
|
|
{
|
|
|
|
|
class DataSet
|
|
|
|
|
{
|
|
|
|
|
public List<Sample> Samples = new List<Sample>();
|
|
|
|
|
|
|
|
|
|
public void SaveDataSet()
|
|
|
|
|
{
|
|
|
|
|
UploadToElastic();
|
|
|
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
|
stringBuilder.AppendLine("Platform,ParticipantID,Angle,Distance,Time,Direction,DotName,TrialIndex,DotIndex,Timestamp");
|
|
|
|
|
Sample first = Samples[0];
|
|
|
|
|
string platform = first.Platform;
|
|
|
|
|
string trial = (first.TrialIndex + 1).ToString();
|
|
|
|
|
string participant = first.ParticipantID.ToString();
|
|
|
|
|
foreach (Sample sample in Samples)
|
|
|
|
|
{
|
|
|
|
|
stringBuilder.AppendLine(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", sample.Platform, sample.ParticipantID, sample.Angle, sample.Distance, sample.Time, sample.Direction, sample.DotName, sample.TrialIndex, sample.DotIndex, sample.Timestamp));
|
|
|
|
|
}
|
|
|
|
|
string path = Path.Combine(Application.persistentDataPath, string.Format("{0}-{1}-{2}.csv",platform,participant,trial));
|
|
|
|
|
using (StreamWriter streamWriter = File.CreateText(path))
|
|
|
|
|
{
|
|
|
|
|
streamWriter.Write(stringBuilder.ToString());
|
|
|
|
|
}
|
|
|
|
|
UploadToAstralQueen(string.Format("{0}-{1}-{2}", platform, participant, trial), stringBuilder.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UploadToAstralQueen(string name, string data)
|
|
|
|
|
{
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
|
|
{
|
|
|
|
|
string endpoint = "http://astralqueen.bw.edu/hci/upload.php";
|
|
|
|
|
|
|
|
|
|
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
|
|
|
|
|
string ud = "userStudyId=" + name + "&userStudyData=" + data;
|
2018-11-30 15:04:39 -05:00
|
|
|
|
client.UploadStringAsync(new Uri(endpoint), ud);
|
|
|
|
|
|
2018-11-29 13:14:03 -05:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UploadToElastic()
|
|
|
|
|
{
|
|
|
|
|
JObject body = new JObject();
|
|
|
|
|
JArray samples = new JArray();
|
|
|
|
|
foreach(Sample sample in Samples)
|
|
|
|
|
{
|
|
|
|
|
JObject sJ = new JObject();
|
|
|
|
|
sJ.Add("platform", sample.Platform);
|
|
|
|
|
sJ.Add("participantId", sample.ParticipantID);
|
|
|
|
|
sJ.Add("angle", sample.Angle);
|
|
|
|
|
sJ.Add("distance", sample.Distance);
|
|
|
|
|
sJ.Add("time", sample.Time);
|
|
|
|
|
sJ.Add("direction", sample.Direction);
|
|
|
|
|
sJ.Add("dotName", sample.DotName);
|
|
|
|
|
sJ.Add("trialIndex", sample.TrialIndex);
|
|
|
|
|
sJ.Add("dotIndex", sample.DotIndex);
|
|
|
|
|
sJ.Add("timestamp", sample.Timestamp);
|
|
|
|
|
samples.Add(sJ);
|
|
|
|
|
}
|
|
|
|
|
body.Add("samples", samples);
|
|
|
|
|
using (var client = new WebClient())
|
|
|
|
|
{
|
|
|
|
|
client.Headers[HttpRequestHeader.ContentType] = "application/json";
|
2018-11-30 15:04:39 -05:00
|
|
|
|
client.UploadStringAsync(new Uri("http://home.superpichu.org:9009"), body.ToString());
|
2018-11-29 13:14:03 -05:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|