Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .vs/ProjectMain/v16/.suo
Binary file not shown.
3 changes: 3 additions & 0 deletions .vs/ProjectSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}
8 changes: 8 additions & 0 deletions .vs/VSWorkspaceState.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"ExpandedNodes": [
"",
"\\c#"
],
"SelectedNode": "\\c#",
"PreviewInSolutionExplorer": false
}
Binary file added .vs/slnx.sqlite
Binary file not shown.
Binary file not shown.
96 changes: 96 additions & 0 deletions c#/RequestTaskProcessing/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Mainboard;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;

namespace RequestTaskProcessing
{
class Program
{
static void Main(string[] args)
{
TestWorkResourceMethod();
}

static void TestWorkResourceMethod()
{
TestWorkResouceClass test = new TestWorkResouceClass();
string id = "test_Resource_";
string classPath = test.WriteClassfication(id, "subcategory");
string boundPath = test.WriteBoundbox(id, "boundbox");


MainCategoryContainer container = new MainCategoryContainer();
container.classficationContainer.SetJObject(test.ReadJsonFile(classPath));
container.boundboxContainer.SetJObject(test.ReadJsonFile(boundPath));

Console.WriteLine(container.GetJObject().ToString());
File.WriteAllText(@"C:/sub_category/maincategory.json", container.GetJObject().ToString());
}
}


class TestWorkResouceClass
{
public string WriteClassfication(string id, string resource)
{
//Set file Path
string workDirectory = @"C:/sub_category/gpuworker1/" + id;
string filename = workDirectory + "/classfication.json";

//Work
ClassficationContainer container = new ClassficationContainer();
container.SetClassfication("Top");


//get JObject
JObject json = container.GetJObject();

//create dircetory&json file
CreateDirectory(workDirectory);
File.WriteAllText(filename, json.ToString());
return filename;
}
public string WriteBoundbox(string id, string resource)
{
//Set file Path
string workDirectory = @"C:/sub_category/gpuworker1/" + id;
string filename = workDirectory + "/boundbox.json";

//Work
BoundBoxContainer container = new BoundBoxContainer();
container.SetBoundBox(10, 20, 15, 25);


//get JObject
JObject json = container.GetJObject();

//create dircetory&json file
CreateDirectory(workDirectory);
File.WriteAllText(filename, json.ToString());
return filename;
}

public void CreateDirectory(string dirPath)
{
if (Directory.Exists(dirPath) == false)
{
Directory.CreateDirectory(dirPath);
}
}

public JObject ReadJsonFile(string filename)
{
string str = File.ReadAllText(filename);
if (str == "")
throw new Exception();
JObject json = JObject.Parse(str);
return json;
}
}
}
12 changes: 12 additions & 0 deletions c#/RequestTaskProcessing/RequestTaskProcessing.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>

</Project>
25 changes: 25 additions & 0 deletions c#/RequestTaskProcessing/RequestTaskProcessing.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32002.261
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RequestTaskProcessing", "RequestTaskProcessing.csproj", "{E65D32F0-3366-4546-A793-A1DB9549AB92}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E65D32F0-3366-4546-A793-A1DB9549AB92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E65D32F0-3366-4546-A793-A1DB9549AB92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E65D32F0-3366-4546-A793-A1DB9549AB92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E65D32F0-3366-4546-A793-A1DB9549AB92}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DE73F36F-FF7E-4980-95B5-97FA6A666B85}
EndGlobalSection
EndGlobal
10 changes: 10 additions & 0 deletions c#/RequestTaskProcessing/TaskMessageClass.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RequestTaskProcessing
{
class TaskMessageClass
{
}
}
235 changes: 235 additions & 0 deletions c#/RequestTaskProcessing/WorkResourceClass.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@

using System;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;

namespace Mainboard
{
/// <summary>
/// work resouce의 내용을 담을 수 있는 container
/// </summary>
public interface IJObjectUseAbleContainer
{
JObject GetJObject();
void SetJObject(JObject obj);
string GetKey();
JToken GetValue();

}

public abstract class CompoundContainer :IJObjectUseAbleContainer
{
abstract public void SetJObject(JObject obj);
abstract public string GetKey();
public JObject GetJObject()
{
JObject value = new JObject();
foreach(IJObjectUseAbleContainer container in containers)
{
value.Add(container.GetKey(), container.GetJObject()[container.GetKey()]);
}
JObject json = new JObject();
json.Add(GetKey(), value);
return json;
}
public void SetAtribute(IJObjectUseAbleContainer container)
{
containers.Add(container);
}

public JToken GetValue()
{
JObject value = new JObject();
foreach (IJObjectUseAbleContainer container in containers)
{
value.Add(container.GetKey(), container.GetJObject()[container.GetKey()]);
}
return value;
}

protected List<IJObjectUseAbleContainer> containers = new List<IJObjectUseAbleContainer>();
}

public class ClassficationContainer : IJObjectUseAbleContainer
{
public ClassficationContainer(string classfication="None")
{
this.classfication = classfication;
}
public string GetKey() { return "classfication"; }
public JObject GetJObject()
{
//if (classfication == null)
JObject json = new JObject();
json.Add(GetKey(), classfication);
return json;
}
public void SetJObject(JObject obj)
{
classfication = (string)obj[GetKey()];
}
public void SetClassfication(string classfication)
{
this.classfication = classfication;
}

public JToken GetValue()
{
return GetJObject()[GetKey()];
}

protected string classfication;
}

public class ConfidenceContainer : IJObjectUseAbleContainer
{
private float threashold = 0.55f;
public ConfidenceContainer(float confidence=0)
{
this.confidence = (threashold <= confidence);
}

public JObject GetJObject()
{
JObject json = new JObject();
json.Add(GetKey(), confidence);
return json;
}

public string GetKey()
{
return "confidence";
}

public JToken GetValue()
{
return GetJObject()[GetKey()];
}

public void SetJObject(JObject obj)
{
confidence = (bool)obj[GetKey()];
}
public void SetConfidence(float confidence)
{
this.confidence = (threashold <= confidence);
}
bool confidence;
}

public class BoundBoxContainer : IJObjectUseAbleContainer
{
public BoundBoxContainer(int x_min=0, int x_max=0, int y_min=0, int y_max=0)
{
SetBoundBox(x_min, x_max, y_min, y_max);
}
public JObject GetJObject()
{
//if (boundbox[0]+ boundbox[1]+ boundbox[2]+ boundbox[3] =< 0) throw NullReferenceException;
JObject json = new JObject();
json.Add(GetKey(), boundbox);
return json;
}
public void SetJObject(JObject obj)
{
JArray value = (JArray)obj[GetKey()];
this.boundbox = value;
}
public void SetBoundBox(int x_min, int x_max, int y_min, int y_max)
{
boundbox = new JArray();
this.boundbox.Add(x_min);
this.boundbox.Add(x_max);
this.boundbox.Add(y_min);
this.boundbox.Add(y_max);
}

public string GetKey() { return "boundbox"; }

public JToken GetValue()
{
return GetJObject()[GetKey()];
}

/// <summary>
/// 0:x_min / 1:x_max / 2:y_min / 3:y_max
/// </summary>
protected JArray boundbox;
}
public class MainCategoryContainer : CompoundContainer
{
public MainCategoryContainer()
{
classficationContainer = new ClassficationContainer();
classficationContainer.SetClassfication("maincategory");
boundboxContainer = new BoundBoxContainer();
//SetAtribute(classficationContainer);
SetAtribute(boundboxContainer);
}
public override string GetKey()
{
return classficationContainer.GetValue().ToString();
}
public override void SetJObject(JObject obj)
{
JObject value = (JObject)obj[GetKey()];
foreach(IJObjectUseAbleContainer container in containers)
{
container.SetJObject(value);
}
}
public void SetClassfication(string classfication)
{
this.classficationContainer.SetClassfication(classfication);
}
public void SetBoundbox(int x_min, int x_max, int y_min, int y_max)
{
boundboxContainer.SetBoundBox(x_min, x_max, y_min, y_max);
}

ClassficationContainer GetClassficationContainer()
{
return classficationContainer;
}
BoundBoxContainer GetBoundBoxContainer()
{
return boundboxContainer;
}

public ClassficationContainer classficationContainer;
public BoundBoxContainer boundboxContainer;
}

public class SubCategoryContainer : CompoundContainer
{
public SubCategoryContainer()
{
SetAtribute(classficationContainer);
SetAtribute(confidenceContainer);
}
public override string GetKey()
{
return "subcategory";
}

public override void SetJObject(JObject obj)
{
JObject value = (JObject)obj[GetKey()];
foreach (IJObjectUseAbleContainer container in containers)
{
container.SetJObject(value);
}
}
//string key;
public ClassficationContainer classficationContainer = new ClassficationContainer();
public ConfidenceContainer confidenceContainer = new ConfidenceContainer();
}
public class WorkResourceClass
{
public WorkResourceClass()
{
}
}
}


Binary file not shown.
Loading